UIAppearance代理规则何时应用于新的视图控制器?

14

我想知道UIAppearance规则在什么时候被应用到新的视图控制器中?

我已经创建了一些全局规则并在我的应用程序委托中调用它们。这样所有的UIButtons都看起来一样。但现在我想修改一个UIButton的外观。我尝试将代码放在- (void)viewDidLoad中以删除其背景,但它不起作用 - UIAppearance规则尚未应用。在一个ViewController中,我将修改代码放在- (void)viewWillLayoutSubviews中,它完美地工作了,但现在在另一个ViewController中它却不起作用(代码相同)。

在哪里才能安全地覆盖UIAppearance规则?

2个回答

15
根据2011 WWDC介绍UIAppearance的视频,自定义样式会在视图上调用-layoutSubviews之前应用。

1
如果您想要自定义一个特定的按钮,您应该选择以下方法之一:
  1. 直接更改按钮实例的属性,不要触碰类的外观设置,或者

  2. 使用以下的appearanceWhenContainedIn:方法:

    [[UIButton appearanceWhenContainedIn:[CustomView class], nil]
     setBackgroundImage:myButtonImage
                forState:UIControlStateNormal];
    
那样,您仍然可以针对特定按钮(当您知道它包含在特定视图中时)使用外观代理,而不更改一般外观设置。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接