2017-04-07 19 views
1

我想自定义重用相同元素但更改颜色的应用程序的颜色。以编程方式定义颜色并在界面生成器中使用它们

这些元素很简单,视图,UIButton,UILabel等没什么特别的。颜色可能来自XML或plist,我将预先加载并解析为UIColor。

是的,我可以从它们中的每一个创建出口并手动设置它们,但是我得到了数百个元素,并且我想要避免这种路径。

我试过IBInspectable,没有运气,我正在寻找一个广泛的解决方案,所有视图,所有风险投资。

我在Objective-C的方式编码...

你可以建议我应该怎么做的任何方法?

评论如果你想更详细...

非常感谢大家!

回答

0

夫妇选项...

  1. 子类的UI元素,并使用MYUIButton代替UIButton,例如,或

  2. 看UIAppearance代理 - https://developer.apple.com/reference/uikit/uiappearance - 利用这一点,你可以设置整个应用的默认外观特征。

例子:

[[UIButton appearance] setBackgroundColor:[UIColor yellowColor]]; 
[[UILabel appearance] setBackgroundColor:[UIColor orangeColor]]; 

如果包括两行(通常在AppDelegate中所做/ didFinishLaunchingWithOptions),UIButton在您的应用程序将有一个黄色的背景,以及UILabel会有一个橙色背景。

(但是,你不会看到在Interface Builder这些变化)


编辑:

正如查尔斯在他的评论中提到,您可以创建子类,然后应用外观的变化只这些类。

假设您有3个按钮“类型”,您要将“配色方案”应用于 - 深蓝色,中等蓝色,浅蓝色或深红色,中红色,浅红色等。你可以采取创建DarkUIButton,MediumUIButton和LightUIButton子类的方法。然后,当你加载你的配色方案...

[[DarkUIButton appearance] setBackgroundColor:scheme.darkcolor]; 
[[MediumUIButton appearance] setBackgroundColor:scheme.mediumcolor]; 
[[LightUIButton appearance] setBackgroundColor:scheme.lightcolor]; 
+0

谢谢您的建议。我的意思是,但不是所有的按钮和标签都是橙色的,我有很多不同的颜色。在1的情况下,我的子类赢了什么? –

+0

如果您创建一个UIButton子类 - 例如MyActionButton适用于所有'action'按钮,应该在你的XML/plist中定义一个'action'背景颜色,你可以调用[[MyActionButton appearance] setBackgroundColor:action],这会改变所有'MyActionButton'的背景,以单独修改它们。注意外观只影响不在窗口中的项目。 – CharlesThierry

+0

这取决于您需要多少定制,以及需要影响多少种不同的“事物”。我会更详细地编辑我的答案。 – DonMag

相关问题