我想覆盖自定义视图控制器的loadView
方法,以便自定义正在显示的视图。对于该自定义视图,我想应用Storyboard编辑器中设置的背景颜色。
如果我举例如下实现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
的默认实现中实现这一目标?
答案 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}}: