Ios 颜色方案的快速扩展和枚举
我使用以下代码块在空白swift文件中创建枚举,用于管理我的应用程序中的配色方案:Ios 颜色方案的快速扩展和枚举,ios,swift,swift3,Ios,Swift,Swift3,我使用以下代码块在空白swift文件中创建枚举,用于管理我的应用程序中的配色方案: enum Color { case border case waterMelon case bleu case ufoGreen case lightBlue } 在底部,我基于刚刚创建的枚举创建了一个扩展 以下是分机: extension Color { var value: UIColor { var instanceColor = UICo
enum Color {
case border
case waterMelon
case bleu
case ufoGreen
case lightBlue
}
在底部,我基于刚刚创建的枚举创建了一个扩展
以下是分机:
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 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)
}
}
我知道这是因为我在扩展中声明的
值。但是我怎样才能摆脱它呢?那么不要使用枚举。如果不想枚举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:
//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 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)
}
}
但是像这样使用怎么样:.dark
?哦,我不知道你想要UIColor的扩展。已编辑。在上面的第一个代码段中,您可能希望不可变属性的类型为(static
),而不是它的实例。您仍然可以将enum
与static
属性一起使用。事实上,无大小写的enum
比struct
更可取,因为您不能意外地初始化它。实际上,使用enum大小写而不是struct有一个重要原因。类型安全。如果您想创建一个UI组件,该组件只能使用有限调色板中的颜色,那么您确实更喜欢使用enum,因为这会立即将该组件的每个用户限制在您想要坚持使用的调色板中。您可以只使用静态属性,例如,请参见。无需所有这些,您只需使用static
颜色实现struct
。@AhmadF但我如何使用这样的颜色:.dark?