Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/113.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 颜色方案的快速扩展和枚举_Ios_Swift_Swift3 - Fatal编程技术网

Ios 颜色方案的快速扩展和枚举

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

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

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?