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) } }