Xcode:来自资产的颜色与来自十六进制的颜色



我只是想知道使用资产中的颜色而不是"生成";它们以编程方式。

定义像这样的颜色有什么缺点吗

let myColor = Color(red: 0.5, green: 0.5, blue: 0.5)

而不是在具有名称"的资产中具有这样的颜色;myColor";并访问它,如:

let myColor = Color("myColor")

第二种方法有一个小缺点:您可能会得到错误的颜色集的文字字符串名称。另一方面,以复杂的方式配置颜色要容易得多,当然,在资产目录中也可以看到它。

如果对RGB值进行硬编码,则很难改变对颜色的看法。

假设Color(red: 0.5, green: 0.5, blue: 0.5)是应用程序配色方案中的背景色,并且您已经在代码中的10个地方使用了它。

如果你想尝试不同的背景色,你需要找到你写的Color(red: 0.5, green: 0.5, blue: 0.5)的10个地方作为背景色,并更改所有这10个地方。这是一种痛苦。

如果您将颜色放在资源目录中,那么更改颜色所需做的就是简单地更改资源目录中颜色的内容,而不需要更改代码。

硬编码RGB值的另一个缺点是,在暗模式下使用不同的颜色是不方便的。你需要得到@Environment(.colorScheme),然后像这样检查:

colorScheme == .dark ? 
Color(red: 0.8, green: 0.8, blue: 0.8) : 
Color(red: 0.1, green: 0.1, blue: 0.1)

看起来一点都不好看。

通过使用资产目录名称,所有关于暗模式和其他内容的信息都在资产目录中。你的代码中会有更少的噪音。

最新更新