我正在尝试从我创建的自定义包中加载一个颜色资源。(实际上只是创建了一个文件夹,并在末尾添加了.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。
我在这里是否遗漏了一些步骤?所有其他的研究似乎都指出这是所有需要的,但我得到的都是零值。
谢谢
3条答案
按热度按时间fiei3ece1#
只需在assets中创建一个文件夹,根据需要命名,右键单击-〉
New Color Set
,在颜色集中设置颜色,根据需要命名颜色集(例如,“Custom_绿色”)。要加载颜色,只需将其命名为let customGreen = UIColor(named: "Custom_Green")
。就是这样。简单。此外,如果你想要一个颜色的光模式和一个颜色的暗模式,你只需要改变Appearances
到Any, Dark
设置的颜色,你很好去。tsm1rwdh2#
也许this could help you的想法是在资源中添加颜色,然后为Color创建一个公共扩展
这样,您可以在以后使用Color.orange或Color.yellow,它们将采用您设置的自定义颜色
5sxhfpxr3#
有时候,我也会从
UIColor(named:in:compatibleWith:)
返回nil
,即使我100%确定颜色在资产目录中定义并且名称正确。当这种情况发生在我身上时,一个
Product > Clean Build Folder
就能起到作用。