我试图找到一种方法来处理多个目标(从一个项目部署多个应用程序),我不知道如何定义UIColor并在故事板中使用它(我可以为UIImage做得很好)。我的想法是根据目标用宏切换这种颜色的值,有人知道它是否可能?
也许定义一种颜色:
var myColor : UIColor
#ifdef target1
myColor = UIColor(red: 249.0/255, green: 249.0/255, blue: 249.0/255, alpha: 1.0)
#ifdef target2
myColor = UIColor(red: 210/255, green: 100/255, blue: 90/255, alpha: 1.0)
#endif
或重复故事板按目标拥有一个故事板。使用info-target1.plist,info-target2.plist?
并在故事板中调用此变量“myColor”
如果没有解决方案,我认为我需要设置所有属性:颜色,字体,大小,编程而不是故事板。
我需要遵循哪种方法?
谢谢
如果没有解决方案,我认为我需要设置所有属性:颜色,字体,大小,编程而不是故事板。
基于编译时参数,无法在故事板场景中改变颜色或其他属性。通常,正确的方法是使用UIAppearance
来覆盖您想要更改的属性。简而言之,任何实现UIAppearance
协议的类都可以提供一个代理对象,允许您调整类将使用的特征。例如,如果要在应用程序中调整导航栏的颜色,请按照您的方式有条件地定义myColor
,然后使用UINavigationBar
的外观代理设置色调颜色:
[[UINavigationBar appearance] setBarTintColor:myColor];
从Xcode 9开始,您可以在Asset中定义和命名颜色;只需在Xcode中打开资源,右键单击并选择“新颜色集”。定义后,可以在故事板颜色选择器中按名称选择颜色或以编程方式引用颜色,例如:
let green = UIColor(named: "MySpecialGreen")