Swift扩展和用于配色方案的枚举

我使用以下代码块在我的应用程序中管理颜色方案的空白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 。 但是我怎么能摆脱它呢?

那不要使用枚举。 如果您不想枚举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) } }