我有一个名为 MyView
的自定义 UIView
类,我将它与通过 Storyboard配置的 UIViewController
一起使用。大多数 View 属性是通过 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
的 viewDidLoad:
[(MyView*)self.view setupVisuals];
有了这个调用,一切正常。但是,这感觉像是一种变通方法,而不是解决可能是相对常见问题的方法。
是否有一个 UIView
方法可以覆盖,或者任何其他机制来完成 MyView
视觉效果的初始化,而无需进入 viewDidLoad:
机制?
* 在这种情况下,初始化器是
initWithCoder:
因为 View 是从 Storyboard加载的。我验证了初始化程序被正确调用,但视觉效果尚未准备好。
最佳答案
听起来您正在正确使用 viewDidLoad:
。根据 Apple 的 docs :
You usually override this method to perform additional initialization on views that were loaded from nib files.
如果您的目标是在 UIView
级别封装此功能,请尝试 layoutSubviews
.
关于objective-c - 从 Storyboard加载后调整 UIView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13726051/