【发布时间】:2012-03-24 15:39:36
【问题描述】:
我了解到,在 iOS 5 中,标有 UI_APPEARANCE_SELECTOR 的属性可以使用外观设置样式。例如 [[UINavigationBar 外观] setTintColor:....]。但是,我似乎无法为所有元素设置样式。例如,UIButton 没有标记为 UI_APPEARANCE_SELECTOR 的属性,因此我无法使用上述技术对其进行样式设置。
我的问题是:当我无法使用外观时,如何在全局范围内(应用程序中的所有外观)最好地设置元素样式?
现在我已经定义了一些颜色、字体、阴影偏移等,我在我的代码中使用了很多不同的地方。这允许我改变很多元素的外观和行为,但它仍然不允许我只用一行代码来设置某个对象的所有实例的样式。
编辑
由于缺乏更好的解决方案,我创建了许多categories,方法如下:
+ (UIButton *)customLabelWithFrame:(CGRect)frame andText:(NSString *)text;
我还发现 - 结合所描述的类别 - stretchable images 很好用。
通过以上方法,我能够以全局方式进行样式设置,但是我对结果不满意,我仍然希望找到更好的解决方案
【问题讨论】:
-
我发现有些东西没有用 UI_APPEARANCE_SELECTOR 标记,但是,可以使用 UIAppearance...例如一些 UIView 属性。我不会建议将其作为一个好的答案,因为它可能会因任何版本而中断,但我发现其中逻辑胜过文档的案例。
-
有趣。但我同意这可能不是最合适的方式。
标签: iphone ios appearance