【问题标题】:Swift Color Assets between different targets不同目标之间的 Swift 颜色资源
【发布时间】:2018-10-02 16:08:40
【问题描述】:

我有一个包含几个不同目标的应用程序。我用一组颜色创建了两个不同的资产文件夹。两个资产文件夹对于每种颜色都有相同的名称,但是颜色不同。

我在这样的代码中调用颜色代码:let color = UIColor(named: "primary")。但是,当我在不同的目标上运行应用程序时,它会从另一个目标中提取原色。这两个文件都只检查到适当的目标,而不检查所有其他目标。

我正在尝试使用相同的名称,但目标之间的颜色不同。有人对我有什么建议吗? :)

【问题讨论】:

    标签: swift xcode assets target


    【解决方案1】:

    猜测UIColor(named: "primary", in: bundleFromTheRightTarget, compatibleWith: nil) 足以消除它应该从哪个位置加载的歧义

    【讨论】:

      【解决方案2】:

      不要使用资源,为每个主题使用一个协议和多个文件,使用资源可能会导致您将来崩溃,因为您必须知道颜色集的确切名称,并在整个主题中使用颜色名称作为字符串应用程序。

      为每个主题使用协议将确保所有主题都有您需要的颜色和字体。

      这里。我创建了一个项目来演示如何实现多主题

      https://github.com/msistemas26/multipleThemesSwift

      【讨论】:

        【解决方案3】:

        提供的两个答案都很好。但是从 2021 年开始,最好的方法可能是结合这两种方法。使用从主包解析颜色的协议,并在协议内部使用一个类,从颜色集中解析颜色。

        在这一类中,你将颜色命名错误的可能性非常低。

        以这种方式混合这些东西的好处是,您可以在一个地方使用动态颜色来实现高对比度(可访问性)、暗模式和正常颜色。用户更改设置时,您的应用程序颜色正在发生变化。而且您仍然可以对其进行测试,因为您正在使用协议来包装这些颜色。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2015-03-25
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-07-16
          • 1970-01-01
          • 2011-01-09
          • 1970-01-01
          相关资源
          最近更新 更多