objective-c - 从 Storyboard加载后调整 UIView

标签 objective-c ios uiview uistoryboard

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

我通过将这一行添加到 MyViewControllerviewDidLoad:

解决了这个问题
[(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/

相关文章:

iphone - 用于存储 UISearchBar 查询的 20,000 个项目的最佳数据存储

ios - SpriteKit 在转换到新场景时收到有关 UIElements 的错误

iOS 键盘颜色更改 - keyboardAppearance 深色不粘

swift - UIBlurEffect View 不覆盖背景图片

ios - Swift 中只允许某些类符合协议(protocol)

iphone - 删除索引 0 处的 CALayer

Objective-C : (private/public properties) making a property readonly for outside class calls and readwrite for self calls

objective-c - 如何安装和使用 iOS 6 中包含的附加亚洲字体?

ios - 如何以编程方式设置划分为多个部分的静态表中的单元格

ios - 未在导航栏内调用 UIButton 选择器