UIAppearance代理规则何时适用于新的视图控制器?
UIAppearance规则适用于一些新的视图控制器时,我正在游荡?
我已经制定了一些全球规则,并在我的应用程序委托中调用它们。 这样所有的UIButtons看起来都一样。 但是现在我想修改一个UIButton的外观。 我试着把代码删除它的背景里面- (void)viewDidLoad
但它不工作 – UIAppearance规则尚未应用。 在一个ViewController中,我把修改代码放在- (void)viewWillLayoutSubviews
,它完美的工作,但现在在另一个ViewController中它不起作用(代码是相同的)。
超越UIA外表规则在哪里安全?
根据2011年WWDCvideo介绍UIAppearance,定制之前应用-layoutSubviews
被称为视图。
如果您想要自定义一个特定的button,您应该:
-
直接修改button实例的属性,不要触摸类的外观设置
-
使用如下的
appearanceWhenContainedIn:
方法:[[UIButton appearanceWhenContainedIn:[CustomView class], nil] setBackgroundImage:myButtonImage forState:UIControlStateNormal];
这样,您仍然可以使用外观代理服务器作为特定的button(当您知道它包含在特定的视图中时),而不会改变一般的外观设置。