我使用以下代码块在我的应用程序中管理颜色方案的空白swift文件中创建枚举:
enum Color {
case border
case waterMelon
case bleu
case ufoGreen
case lightBlue
}
在最后,我创建了一个基于Color
enum的扩展基础。我刚刚创建。
这里的扩展名为:
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
我知道这是因为我在扩展时声明的value
。但是我怎么能摆脱它?
答案 0 :(得分:3)
然后不要使用枚举。如果您不想枚举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)
}
}