从Swift中的自定义包加载色彩资源

oyt4ldly  于 2022-10-31  发布在  Swift
关注(0)|答案(3)|浏览(202)

我正在尝试从我创建的自定义包中加载一个颜色资源。(实际上只是创建了一个文件夹,并在末尾添加了.bundle)。看起来查找包的代码工作正常,但实际上我无法从包中提取任何内容(更具体地说是颜色)。它们都返回nil。
这是我的代码。

guard let bundleURL = Bundle.main.url(forResource: "TestTheme", withExtension: "bundle") else { return }
    guard let bundle = Bundle(url: bundleURL) else { return }
    let color = UIColor(named: "NavigationBarTint", in: bundle, compatibleWith: nil)
    self.navigationController?.navigationBar.tintColor = color

至于我的包的内容,我在XCode中创建了一个颜色资源,并添加了一些颜色。在Finder中找到资源的位置,并将资源复制/粘贴到我的包中。因此,我的“TestTheme”包中存在的所有内容都是一个具有4种颜色的单一颜色资源,其中之一是NavigationBarTint。
我在这里是否遗漏了一些步骤?所有其他的研究似乎都指出这是所有需要的,但我得到的都是零值。
谢谢

fiei3ece

fiei3ece1#

只需在assets中创建一个文件夹,根据需要命名,右键单击-〉New Color Set,在颜色集中设置颜色,根据需要命名颜色集(例如,“Custom_绿色”)。要加载颜色,只需将其命名为let customGreen = UIColor(named: "Custom_Green")。就是这样。简单。此外,如果你想要一个颜色的光模式和一个颜色的暗模式,你只需要改变AppearancesAny, Dark设置的颜色,你很好去。

tsm1rwdh

tsm1rwdh2#

也许this could help you的想法是在资源中添加颜色,然后为Color创建一个公共扩展

static let orange = Color("CustomOrange")
 static let yellow = Color("CustomYellow")

这样,您可以在以后使用Color.orange或Color.yellow,它们将采用您设置的自定义颜色

5sxhfpxr

5sxhfpxr3#

有时候,我也会从UIColor(named:in:compatibleWith:)返回nil,即使我100%确定颜色在资产目录中定义并且名称正确。
当这种情况发生在我身上时,一个Product > Clean Build Folder就能起到作用。

相关问题