当我设置了backgroundColor
Xib实例化的子类的属性时UIView
,视图的背景颜色不会改变,而是保持在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文件的customview中,这就是更改backgroundcolor的原因,而您看不到这些更改。您需要更改debugview子视图的背景颜色以查看颜色变化。例如:-
self.debugView.subviews.first?.backgroundColor =
self.debugView.subviews.first?.backgroundColor == UIColor.blue
? UIColor.black : UIColor.blue
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句