从故事板加载后调整UIView

时间:2012-12-05 15:00:21

标签: objective-c ios uiview uistoryboard

我有一个名为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],因为当时_myButtonnil

我通过将此行添加到MyViewController的{​​{1}}

来解决了这个问题
viewDidLoad:

有了这个电话,一切正常。然而,这感觉就像一个解决方案,而不是解决可能是一个相对常见的问题。

是否有[(MyView*)self.view setupVisuals]; 方法可以覆盖,或任何其他机制来完成UIView视觉效果的初始化,而无需点击MyView机制?

<小时/> * 在这种情况下,初始值设定项为viewDidLoad:,因为视图是从故事板加载的。我确认初始化程序被正确调用,但视觉效果还没有准备好。

1 个答案:

答案 0 :(得分:2)

听起来你正确使用viewDidLoad:。根据Apple的docs

  

您通常会覆盖此方法以执行其他初始化   在从nib文件加载的视图上。

如果您的目标是在UIView级别封装此功能,请尝试layoutSubviews