如何在loadView中设置背景颜色?

时间:2014-05-01 08:45:11

标签: ios objective-c uiviewcontroller uistoryboard

我想覆盖自定义视图控制器的loadView方法,以便自定义正在显示的视图。对于该自定义视图,我想应用Storyboard编辑器中设置的背景颜色。

enter image description here

如果我举例如下实现loadView:

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

然后生成的视图具有黑色背景。但是,如果我只调用默认实现:

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

然后将橙色背景颜色(参见屏幕截图)应用于视图。如何获得 Storyboard编辑器中设置的颜色?我想做这样的事情(伪代码):

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

apple如何在loadView的默认实现中实现这一目标?

2 个答案:

答案 0 :(得分:0)

由于您显然真的想在此处使用“loadView”而不是“viewDidLoad”, AND Apple's documentation for loadView says NOT to call "super",将需要在其他地方“隐藏”您的自定义颜色。例如。 ViewController中的其他一些视图(例如隐藏的视图?),它连接到IBOutlet,您可以通过视图的“.backgroundColor”属性将其提取出来。

或者您需要通过"colorWithRed:green:blue:alpha:"之类的{.backgroundColor方法设置“UIColor”属性。

答案 1 :(得分:0)

故事板中的所有观看次数均在viewWillAppear:之前展示,这意味着,viewDidLoad您尚未拥有它们。尝试将代码移至viewWillAppear:,甚至更好,移至viewWill/DidLayoutSubviews,而self.view.backgroundColor将为您提供您在IB中设置的代码。

要回答评论中的问题,请转到IB,选择您的视图,转到Utilities(右侧)窗格下的Identity Inspector选项卡,然后将自定义类设置为MyCustomView。无需实施loadView即可。

e.g。我已声明为自定义视图类UIView的{​​{1}}: enter image description here