如何全局样式不支持外观的元素

时间:2012-03-24 15:39:36

标签: iphone ios appearance

据我所知,在iOS 5中,可以使用外观设置标记为UI_APPEARANCE_SELECTOR的属性。例如[[UINavigationBar外观] setTintColor:....]。但是,我似乎无法设置所有元素的样式。例如,UIButton没有标记为UI_APPEARANCE_SELECTOR的属性,因此我无法使用上述技术对其进行样式化。

我的问题是:当我无法使用外观时,如何在全局范围内设置最佳样式元素(应用程序中的所有外观)?

现在我已经定义了一些颜色,字体,阴影偏移等,我在代码中使用了很多不同的地方。这允许我改变许多元素的外观和行为,但它仍然不允许我用一行代码来设置某个对象的所有实例的样式。

修改

由于缺乏更好的解决方案,我使用简单方法创建了许多categories,如下所示:

+ (UIButton *)customLabelWithFrame:(CGRect)frame andText:(NSString *)text;

此外,我发现 - 结合所描述的类别 - stretchable images非常好用。

有了上述内容,我能够以全球化的方式进行设计,但是我对结果并不满意,我仍然希望找到更好的解决方案

2 个答案:

答案 0 :(得分:0)

我认为一个非常好的解决方案可能是Android设计界面的方式。 Android依靠XML文件来定义用户界面。事实上,我正在建立一个图书馆,旨在为我正在开发的项目提供相同的功能。它仍然是一个正在进行/实验的工作,因此非常混乱的代码( 你已被警告过了! ),但它可能会给你一些想法。

可以在此处下载示例项目:http://dl.dropbox.com/u/6487838/WSLayoutManager.zip

通过添加控件对XML文件进行一些实验。创建自定义控件类并从XML文件等实例化它们......这很有趣:)

答案 1 :(得分:0)

如您自己提到的那样,标准子类或工厂类怎么样?? 对于我自己使用工厂类的按钮。