类不是覆盖故事板

时间:2018-05-15 00:34:09

标签: ios swift

在main.storyboard中我有一个UIView,在身份检查器中我将视图的类设置为我的自定义UIView类,名为" customView。"所有这一切都将背景颜色设置为紫色。但是,当我运行应用程序时,颜色不会改变,它保持原来的颜色。我做错了什么?

class CustomView: UIView {


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

required init?(coder aDecoder: NSCoder) {
    super.init(coder: aDecoder)
}
} 

2 个答案:

答案 0 :(得分:3)

由于您正在使用的视图是从故事板加载的,因此不会调用方法override init(frame: CGRect)。您必须在required init?(coder aDecoder: NSCoder)方法上设置背景颜色。

required init?(coder aDecoder: NSCoder) {
    super.init(coder: aDecoder)
    self.backgroundColor = UIColor.purple
}

答案 1 :(得分:1)

创建自定义UIView的正确方法是拥有一个您从init(frame:)init?(coder:)调用的共享功能,这将保证它会表现出来无论它是在IB中设置为类还是在代码中实例化

class CustomView: UIView {

    override init(frame: CGRect) {
        super.init(frame: frame)
        sharedLayout()
    }
    required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
        sharedLayout()
    }
    func sharedLayout() {
        // all the layout code from above
    }

}