[英]Why doesn't setting backgroundColor have a visible effect on my custom UIView?
当我设置UIView
Xib 实例化子类的backgroundColor
属性时,视图的背景颜色不会改变,而是保持在 Xib 中设置的颜色。
我创建了UIView
的子类,我们称之为MyView
,以及我从中实例化它的 Xib 。 使用 Interface Builder,我将 Xib 中视图的背景颜色设置为蓝色。
我添加了一个MyView
实例作为我的应用程序主视图的子视图。 正如预期的那样,它看起来是蓝色的。
然后我添加了一个出口myView
,引用了MyView
那个实例,以及一个按钮,它的动作试图改变视图的背景颜色,如下所示:
@IBOutlet weak var debugView: MyView!
@IBAction func debug(_ sender: Any) {
myView.backgroundColor = UIColor.green
}
我希望myView
的背景颜色变为绿色; 相反,它像以前一样保持蓝色。
奇怪的是,如果我在调试器中检查视图的背景颜色,似乎该属性已按预期设置为绿色,即使更改不可见:
(lldb) p debugView.backgroundColor == UIColor.blue
(Bool) $R1 = false
(lldb) p debugView.backgroundColor == UIColor.green
(Bool) $R2 = true
我还尝试使用setNeedsDisplay()
强制视图重绘,但没有效果。
为什么我的自定义视图的外观不反映其backgroundColor
属性?
您可能在 swift 文件中将 nib 的视图作为子视图添加到您的自定义视图,这就是更改背景颜色的原因,您将看不到更改。 您需要更改调试视图子视图的背景颜色以查看颜色变化。 例如:-
self.debugView.subviews.first?.backgroundColor =
self.debugView.subviews.first?.backgroundColor == UIColor.blue
? UIColor.black : UIColor.blue
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.