在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)
}
}
答案 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
}
}