我有一个具有两个不同目标的应用程序。我用一组颜色创建了两个不同的资产文件夹。两种资产文件夹的每种颜色都有相同的名称,但是颜色不同。
我正在这样的代码中调用颜色代码:let color = UIColor(named: "primary")
。但是,当我在其他目标上运行该应用程序时,它会从其他目标中提取原色。这两个文件仅被检查到适当的目标,而未检查所有其他目标。
我正在尝试使用相同的名称,目标之间使用不同的颜色。有人对我有提示吗? :)
答案 0 :(得分:1)
猜测UIColor(named: "primary", in: bundleFromTheRightTarget, compatibleWith: nil)
足以消除应该从哪个位置加载
答案 1 :(得分:0)
不要使用资产,为每个主题使用协议和多个文件,使用资产可能会导致将来崩溃,因为您将必须知道颜色集的确切名称,并且在整个颜色中使用颜色名称作为字符串应用程序。
为每个主题使用协议将确保您所有主题都有所需的颜色和字体。
这里。我创建了一个项目来演示如何实现多主题
答案 2 :(得分:0)
两个提供的答案都很好。但是从 2021 年开始,最好的方法可能是将这两种方法结合起来。使用从主包中解析颜色的协议,并在协议内部使用一个类,从颜色集中解析颜色。
你在这门课中给颜色命名错误的可能性非常低。
以这种方式混合这些东西的好处是,您可以在一个地方使用动态颜色来实现高对比度(可访问性)、暗模式和正常颜色。当用户更改设置时,您的应用程序颜色正在发生变化。而且您仍然可以对其进行测试,因为您正在使用协议来包装这些颜色。