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

时间:2017-02-05 09:08:11

标签: ios swift swift3

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

1 个答案:

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