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

例如,如果我像这样实现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的默认实现中实现这一目标的?
发布于 2014-05-01 08:48:38
发布于 2014-05-01 15:08:29
您从故事板中获得的所有视图都是在viewWillAppear:之前列出的,这意味着,在viewDidLoad中,您还没有它们。尝试将您的代码移动到viewWillAppear:,或者更好地将代码移动到viewWill/DidLayoutSubviews,而不是self.view.backgroundColor,这将为您提供您在IB中设置的代码。
要回答注释中的问题,请转到IB,选择您的视图,转到实用程序(右)窗格下的Identity检查选项卡,并将自定义类设置为MyCustomView。这样做不需要实现loadView。
例如,我已声明为自定义视图类UIView的AGBlurView:

https://stackoverflow.com/questions/23404585
复制相似问题