什么时候UIAppearance代理规则得到应用到新的视图控制器?(When do UIAppear

2019-09-19 10:46发布

当究竟UIAppearance规则得到应用到一些新的视图控制器我徘徊?

我做了一些全球性规则,我称他们为我的应用程序委托。 这样,所有UIButtons看起来相同。 但现在我想修改一个UIButton的只是外表。 我试着将代码删除它的背景里- (void)viewDidLoad ,但它不工作- UIAppearance规则尚未应用。 在一个视图控制器我把修改代码中- (void)viewWillLayoutSubviews它完美地工作,但现在在另一个视图控制器不工作(代码是一样的)。

哪里是安全的替代UIAppearance规则?

Answer 1:

根据2011年WWDC视频引入UIAppearance,所述自定义设置权之前施加-layoutSubviews被称为上的视图。



Answer 2:

如果你正在寻找定制一个特定的按钮,你应该:

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

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

     [[UIButton appearanceWhenContainedIn:[CustomView class], nil] setBackgroundImage:myButtonImage forState:UIControlStateNormal]; 

这样,你仍然可以使用代理外观为您的特定按钮(当你知道它包含在特定视图),并不会改变整体外观的设置。



文章来源: When do UIAppearance proxy rules get applied to new view controller?