iOS - 故事板 - 在故事板配置面板中使用编程定义的颜色

9

我想找到一种处理多个目标(从一个项目中部署多个应用程序)的方法,但我不知道如何在Storyboard中定义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

或者复制Storyboard,针对每个目标(多个target)使用info-target1.plist,info-target2.plist?

在Storyboard中将此变量称为“myColor”

如果没有解决方案,我认为我需要以编程方式而非在Storyboard中设置所有属性:颜色,字体,大小。

我需要遵循哪种方法?

谢谢

2个回答

4

从Xcode 9开始,你可以在资源中心内定义并命名颜色;只需在Xcode中打开资产,右键单击并选择“新颜色集”。一旦定义完成,可以通过名称在Storyboard颜色选择器中选择颜色或者以编程方式引用,例如:

let green = UIColor(named: "MySpecialGreen")

这是非常有帮助的信息,节省了我的时间。字体方面还有其他方法吗? - Krishna Kirana
@KrishnaKirana 我还没有遇到过这个问题(我刚开始使用),但是苹果有一篇不错的文章介绍如何使用自定义字体:https://developer.apple.com/documentation/uikit/text_display_and_fonts/adding_a_custom_font_to_your_app - sherb

2
如果没有解决方案,我认为我需要以编程方式而不是在Storyboard中设置所有属性:颜色、字体、大小等。
在故事板场景中,没有办法根据编译时参数来变化颜色或其他属性。通常,处理这种情况的正确方法是使用UIAppearance来覆盖您想要更改的属性。简而言之,任何实现UIAppearance协议的类都可以提供一个代理对象,让您调整该类将使用的特征。例如,如果您想在应用程序中调整导航栏的颜色,请像您所做的那样有条件地定义myColor,然后使用UINavigationBar的外观代理来设置色调颜色:
[[UINavigationBar appearance] setBarTintColor:myColor];

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接