ios - 配色方案的 Swift 扩展和枚举

标签 ios swift swift3

我使用这段代码在空白的 swift 文件中创建枚举以管理我的应用程序中的配色方案:

enum Color {
    case border
    case waterMelon
    case bleu
    case ufoGreen
    case lightBlue 
}

在它的底部,我基于我刚刚创建的 Color 枚举创建了一个扩展。

这里是扩展名:

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 上声明的 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)
    }
}

关于ios - 配色方案的 Swift 扩展和枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42050283/

相关文章:

iphone - 在 iPhone 中使用加速度计查找距离

objective-c - ZipZap 文件名问题

ios - 使用 Swift 的 Firebase 查询无法按预期工作

swift - 如何限制 map 字典

协议(protocol)扩展内关联类型的快速初始化

ios - 在ContainerView中打开不同的 View

ios - 如何在 RxSwift 中选择 CollectionView 单元格

ios - 保留在一个圆圈中设置的3个变量之间的循环?

iOS Multipeer Connectivity - 在自定义 MCNearbyServiceBrowser 中显示 DiscoveryInfo

ios - 新的高分弹出窗口