我试图找到一种方法来处理多个目标(从一个项目部署多个应用程序),我不知道如何定义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”
如果没有解决方案,我认为我需要设置所有属性:颜色,字体,大小,编程而不是故事板。
我需要遵循哪种方法?
由于
答案 0 :(得分:2)
如果没有解决方案,我认为我需要设置所有属性:颜色,字体,大小,编程而不是故事板。
根据编译时参数,无法改变故事板场景中的颜色或其他属性。通常,正确的方法是使用UIAppearance
来覆盖您想要更改的属性。简而言之,任何实现UIAppearance
协议的类都可以提供一个代理对象,允许您调整类将使用的特征。例如,如果您想在应用中调整导航栏的颜色,请按照您的步骤有条件地定义myColor
,然后使用UINavigationBar
的外观代理设置色调颜色:
[[UINavigationBar appearance] setBarTintColor:myColor];
答案 1 :(得分:1)
从Xcode 9开始,您可以在Asset中定义和命名颜色;只需在Xcode中打开资产,右键单击并选择“新颜色集”。定义后,可以在情节提要板颜色选择器中通过名称选择颜色,也可以通过编程方式对其进行选择,例如:
let green = UIColor(named: "MySpecialGreen")