簡體   English   中英

為什么設置 backgroundColor 對我的自定義 UIView 沒有可見效果?

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM