我使用这段代码在空白的 swift 文件中创建枚举以管理我的应用程序中的配色方案:
enum Color {
case border
case waterMelon
case bleu
case ufoGreen
case lightBlue
}
在它的底部,我基于我刚刚创建的 Color
枚举创建了一个扩展。
这里是扩展名:
extension Color {
var value: UIColor {
var instanceColor = UIColor.clear
switch self {
case .border:
instanceColor = UIColor(red:0.92, green:0.93, blue:0.94, alpha:1.00)
case .waterMelon:
instanceColor = UIColor(red:0.97, green:0.38, blue:0.45, alpha:1.00)
default:
instanceColor = UIColor.clear
}
return instanceColor
}
}
现在的问题是,当我想使用这些颜色时,我应该使用这样的颜色:
//now : I don't like it.
view.backgroundView = Color.dark.value
//that how I want to be
view.backgroundView = Color.dark
// or like this
view.backgroundView = .dark
我知道这是因为我在 extension 上声明的 value
。但我怎样才能摆脱它呢?
最佳答案
那么不要使用枚举。如果您不想枚举 switch 语句中的值,则不需要 enum
。使用具有常量属性的 struct
。
struct Color {
static let border = UIColor(red:0.92, green:0.93, blue:0.94, alpha:1.00)
static let waterMelon = UIColor(red:0.97, green:0.38, blue:0.45, alpha:1.00)
// and so on ....
}
如果您想扩展 UIColor 以访问 UIColor 的所有其他颜色,您可以像这样扩展 UIColor:
extension UIColor {
static var border: UIColor {
return UIColor(red:0.92, green:0.93, blue:0.94, alpha:1.00)
}
static var waterMelon: UIColor {
return UIColor(red:0.97, green:0.38, blue:0.45, alpha:1.00)
}
}
关于ios - 配色方案的 Swift 扩展和枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42050283/