我有一个名为UIView
的自定义MyView
类,我与故事板中配置的UIViewController
一起使用。大多数视图属性都是通过Interface Builder配置的;但是,在将它们设置为按钮的背景之前,我需要以编程方式调整几个图像,如下所示:
-(void)setupVisuals {
UIImage *image = [[UIImage imageNamed:@"myButton.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 10, 0, 10)];
// _myButton is an IBOutlet property set through the storyboard:
[_myButton setBackgroundImage:image forState:UIControlStateNormal];
}
问题是我无法从初始化程序 * 调用[self setupVisuals]
,因为当时_myButton
为nil
。
我通过将此行添加到MyViewController
的{{1}}
viewDidLoad:
有了这个电话,一切正常。然而,这感觉就像一个解决方案,而不是解决可能是一个相对常见的问题。
是否有[(MyView*)self.view setupVisuals];
方法可以覆盖,或任何其他机制来完成UIView
视觉效果的初始化,而无需点击MyView
机制?
<小时/> * 在这种情况下,初始值设定项为
viewDidLoad:
,因为视图是从故事板加载的。我确认初始化程序被正确调用,但视觉效果还没有准备好。
答案 0 :(得分:2)
听起来你正确使用viewDidLoad:
。根据Apple的docs:
您通常会覆盖此方法以执行其他初始化 在从nib文件加载的视图上。
如果您的目标是在UIView
级别封装此功能,请尝试layoutSubviews
。