当UIAppearance规则确实应用于某个新的视图控制器时,我正在徘徊吗?
我制定了一些全局规则,我在我的app委托中调用它们。这样所有UIButton看起来都一样。但现在我想修改一个UIButton的外观。我已经尝试将代码移除- (void)viewDidLoad
中的背景,但它不起作用 - UIAppearance规则尚未应用。在一个ViewController中,我将修改代码放在- (void)viewWillLayoutSubviews
中并且它工作得很好,但现在在另一个ViewController中它不起作用(代码是相同的)。
覆盖UIAppearance规则在哪里安全?
答案 0 :(得分:14)
根据引入UIAppearance的2011 WWDC视频,在视图上调用-layoutSubviews
之前应用自定义。
答案 1 :(得分:1)
如果您想要自定义一个特定按钮,您应该:
直接更改按钮实例的属性,而不是触摸类的外观设置,或
使用如下所示的appearanceWhenContainedIn:
方法:
[[UIButton appearanceWhenContainedIn:[CustomView class], nil]
setBackgroundImage:myButtonImage
forState:UIControlStateNormal];
这样你仍然可以使用特定按钮的外观代理(当你知道它包含在特定视图中时),而不是改变一般外观设置。