当我设置了Xib实例化的backgroundColor
子类的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
关于ios - 为什么设置backgroundColor对我的自定义UIView没有可见效果?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51008687/