UIAppearance 代理规则何时应用于新的视图控制器?
Posted
技术标签:
【中文标题】UIAppearance 代理规则何时应用于新的视图控制器?【英文标题】:When do UIAppearance proxy rules get applied to new view controller? 【发布时间】:2012-07-13 13:21:24 【问题描述】:我在徘徊 UIAppearance 规则何时应用于某些新的视图控制器?
我制定了一些全局规则,并在我的应用程序委托中调用它们。这样所有的 UIButton 看起来都一样。但现在我只想修改一个 UIButton 的外观。我已经尝试将代码放在- (void)viewDidLoad
中删除它的背景,但它不起作用 - UIAppearance 规则尚未应用。在一个 ViewController 中,我将修改代码放在 - (void)viewWillLayoutSubviews
中,它运行良好,但现在在另一个 ViewController 中它不起作用(代码相同)。
在哪里可以安全地覆盖 UIAppearance 规则?
【问题讨论】:
【参考方案1】:根据 2011 年 WWDC 视频介绍 UIAppearance,在视图上调用 -layoutSubviews
之前应用了自定义。
【讨论】:
【参考方案2】:如果您希望自定义一个特定按钮,您应该:
直接修改按钮实例的属性,不要修改类的外观设置,或者
使用appearanceWhenContainedIn:
方法,如下所示:
[[UIButton appearanceWhenContainedIn:[CustomView class], nil]
setBackgroundImage:myButtonImage
forState:UIControlStateNormal];
这样您仍然可以为您的特定按钮使用外观代理(当您知道它包含在特定视图中时),而不会更改一般外观设置。
【讨论】:
以上是关于UIAppearance 代理规则何时应用于新的视图控制器?的主要内容,如果未能解决你的问题,请参考以下文章
使用 UIAppearance 代理设置 UILabel 样式
如何使 UIAppearance 代理适用于以编程方式创建的视图?