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

时间:2012-07-13 13:21:25

标签: ios uiappearance

当UIAppearance规则确实应用于某个新的视图控制器时,我正在徘徊吗?

我制定了一些全局规则,我在我的app委托中调用它们。这样所有UIButton看起来都一样。但现在我想修改一个UIButton的外观。我已经尝试将代码移除- (void)viewDidLoad中的背景,但它不起作用 - UIAppearance规则尚未应用。在一个ViewController中,我将修改代码放在- (void)viewWillLayoutSubviews中并且它工作得很好,但现在在另一个ViewController中它不起作用(代码是相同的)。

覆盖UIAppearance规则在哪里安全?

2 个答案:

答案 0 :(得分:14)

根据引入UIAppearance的2011 WWDC视频,在视图上调用-layoutSubviews之前应用自定义。

答案 1 :(得分:1)

如果您想要自定义一个特定按钮,您应该:

  1. 直接更改按钮实例的属性,而不是触摸类的外观设置,或

  2. 使用如下所示的appearanceWhenContainedIn:方法:

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