簡體   English   中英

如何在loadView中設置backgroundColor?

[英]How to set backgroundColor in loadView?

我想覆蓋我的自定義視圖控制器的loadView方法,以自定義正在顯示的視圖。 對於該自定義視圖,我想應用在情節提要編輯器中設置的背景色。

在此處輸入圖片說明

例如,如果我這樣實現loadView:

-(void)loadView{
    self.view = [[MyCustomView alloc] init];
    //Do some initialisation work for the custom view
    //...
}

然后,結果視圖具有黑色背景。 但是,如果我僅調用默認實現:

-(void)loadView{
    [super loadView];
}

然后,將橙色背景色(請參見屏幕截圖)應用於視圖。 如何獲得故事板編輯器中設置的顏色? 我想做這樣的事情(偽代碼):

-(void)loadView{
    self.view = [[MyCustomView alloc] init];
    self.view.backgroundColor = [self colorThatWasSelectedInStoryboardEditor];
    //Do some initialisation work for the custom view
    //...
}

蘋果如何在loadView的默認實現中實現這一目標?

由於您顯然確實想在這里使用“ loadView ”而不是“ viewDidLoad ”, 並且 Apple的loadView文檔說不要調用“ super ,因此您將需要“隱藏”自定義顏色。 例如,在ViewController中使用其他視圖(例如,隱藏的視圖?),將其連接到IBOutlet,並可以通過視圖的“ .backgroundColor ”屬性將其提取。

或者,您將需要通過良好的UIColor方法(例如colorWithRed:green:blue:alpha: ”)來設置“ .backgroundColor ”屬性。

情節提要中所有視圖的布局都在viewWillAppear:之前布置,這意味着在viewDidLoad您還沒有這些視圖。 試試你的代碼移動到viewWillAppear: ,甚至更好, viewWill/DidLayoutSubviewsself.view.backgroundColor會給你你在IB設置的一個。

要回答您評論中的問題,請轉到IB,選擇視圖,轉到“實用程序”(右)窗格下的“身份檢查器”選項卡,然后將自定義類設置為MyCustomView 無需實現loadView即可。

例如UIView ,我已經聲明為自定義視圖類AGBlurView 在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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