我将所有颜色都放在专用的颜色资源中。这允许我定义支持"任何外观"和"深色外观"的命名常量。现有的颜色资源可以工作(以前定义(,但是如果我尝试定义新的颜色资源(例如myCustomColor(甚至复制现有的颜色资源,那么我会得到:
Type 'UIColor?' has no member 'myCustomColor'
示例用法:
label.textColor = .myCustomColor
我知道我可以使用(使用新创建的颜色进行测试,所以没有错别字(:
UIColor(named: "myCustomColor")
但是,我不想更改此语法或使我的代码混乱不同的语法。
我使用的是 Xcode 11.3 (11C29( 并使用 Swift 5。还有其他人有同样的问题吗?
您需要在扩展名中声明自定义颜色UIColor
.
extension UIColor {
static let myCustomColor = UIColor(named: "myCustomColor")
}
然后,您可以使用此颜色,如下所示:
label.textColor = UIColor.myCustomColor
这里没有"问题"。一个静态属性UIColor.myCustomColor
,类似于苹果的UIColor.systemRed
,永远不会因为你把一个颜色集放到资产目录中而神奇地出现。如果需要这样的属性,则必须显式定义它。