界面构建器中颜色的变量

jam*_*ick 6 xcode interface-builder swift

我有一个项目,我需要在应用程序中更改整体颜色主题.我的很多UI元素都是通过Xcode 6.1中的Interface Builder构建的.我需要在接口构建器中将颜色设置为变量,因此如果我设置一个预处理器告诉应用程序使用某个方案,那么颜色将在界面构建器中更改.这甚至可能吗?

Ron*_*Ron 1

我不知道有什么方法可以使用界面生成器来执行此操作,但是有一种方法可以在代码中为许多 IOS UI 元素设置外观属性,然后这些属性将全局应用。作为示例,请参阅以下代码片段:

UIToolbar.appearance().tintColor = UIColor.whiteColor()
UIToolbar.appearance().barTintColor = UIColor.blackColor()

UITableView.appearance().separatorColor = UIColor.grayColor()
UITableView.appearance().sectionIndexColor = UIColor.grayColor();

UINavigationBar.appearance().tintColor = UIColor.blueColor()
UINavigationBar.appearance().barTintColor = UIColor.blackColor()
UINavigationBar.appearance().titleTextAttributes = [NSForegroundColorAttributeName : UIColor.whiteColor()]
Run Code Online (Sandbox Code Playgroud)

该代码为我的应用程序中的所有 UIToolbars 设置默认色调和条形颜色、所有 UITableViews 的分隔符和部分索引颜色以及所有 UINavigation 视图的外观属性。

您可以#if根据编译器中设置的环境变量来设置不同的外观。

如果您想了解更多有关其工作原理的信息,我建议您阅读有关 UIAppearance 属性的 Apple 文档: UIAppearance Documentation