При наследовании UIView и создании экземпляра для нового класса он не создает представление - PullRequest
0 голосов
/ 21 февраля 2019

Я создал новый класс, наследующий UIView.Когда я создаю экземпляр нового класса, представление не создается.Это мой класс.

class QuestionView: UIView {

    var metrics : [String : CGFloat] = [:]

    override init(frame : CGRect){
        super.init(frame: frame)
        self.backgroundColor = UIColor.blue
    }

    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
}

Здесь я создал экземпляр этого класса, чтобы иметь следующие значения

x = 0, y = середина экрана, ширина = ширина экрана, высота = 400

class mainView : UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        var questionView = QuestionView(frame: CGRect(x: 0, y: self.view.frame.height/2, width: self.view.frame.width, height: 400))
        self.view.addSubView(questionView)
    }
}

Я не вижу создаваемых видов.

Ответы [ 3 ]

0 голосов
/ 21 февраля 2019

Вы должны добавить все виды, созданные программно в viewDidLayoutSubView, как показано ниже

   override func viewDidLayoutSubviews() {
      var questionView = QuestionView(frame: CGRect(x: 0, y: self.view.frame.height/2, width: self.view.frame.width, height: 400))
self.view.addSubView(questionView)
}
0 голосов
/ 21 февраля 2019

Попробуйте следующий код, чтобы получить вид спереди, используйте функцию bringSubviewToFront.

override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.

        let questionView = QuestionView(frame: CGRect(x: 0, y: self.view.frame.height/2, width: self.view.frame.width, height: 400))
        self.view.addSubview(questionView)

        self.view.bringSubviewToFront(questionView)

    }
0 голосов
/ 21 февраля 2019

Добавить подпредставление (questionView) в классе mainView в методе viewDidLoad.

self.view.addSubview(questionView)

Вы также можете проверить представление, установив цвет фона

questionView.backgroundColor = UIColor.red

enter image description here

...