2017-02-05 9 views
1

私はこのコードのブロックに私のアプリでカラースキームを管理するための空白の迅速なファイルに列挙型を作成します。その下にはカラースキームのためのスウィフトの拡張および列挙

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 

をそして、私はそれはので、私は宣言しvalueを知っています拡張時に。どうすればそれを取り除くことができますか?

+0

あなただけの例を参照、代わりに静的プロパティを使用することができます[このQ&A](http://stackoverflow.com/q/42030338/2976878)。 – Hamish

+1

これをすべて必要とせずに、 'static'色で' struct'を実装するだけです。 –

+0

@AhmadFしかし、どうすればこのように使うことができますか:.dark? – Sajad

答えて

3

enumを使用しないでください。 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) 
    } 
} 
+0

しかし、このように使用すると、 '.dark'? – Sajad

+0

あなたはUIColorの拡張子を持ちたいとは知らなかった。 EDITED。 – Kie

+1

上記の最初のスニペットでは、不変プロパティをそのインスタンスではなくタイプ( 'static')にすることができます。 – dfri

関連する問題