继承UIView并为新类创建实例时,它不会创建视图

时间:2019-02-21 10:08:14

标签: ios swift uiview addsubview

我创建了一个继承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 :(得分:0)

mainView方法的viewDidLoad类中添加子视图(questionView)。

self.view.addSubview(questionView)

您还可以通过设置背景颜色来测试视图

questionView.backgroundColor = UIColor.red

enter image description here

答案 1 :(得分:0)

您应添加在Dim TOTALDAYS as Long中以编程方式创建的所有视图,如下所示

viewDidLayoutSubView

答案 2 :(得分:0)

尝试使用以下代码将视图显示在前面,请使用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)

    }