[英]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.