2016-03-22 8 views
0

私は作成しているiOSアプリケーション内でUIColorオブジェクトを作成するために作成したウェブサイトのカラーピッカーとしてスペクトルjavascriptプラグインを使用しようとしています。 RGB /六角/ HSVなどで 結腸を作成することができますhttps://bgrins.github.io/spectrum/hsva()データを即座にUIColorに変換する

[U] Rコードしかし、私は同様にアルファを使用したい - ので、私は、これらに限定されています:

スペクトラムは便利な小さなカラーピッカーでありますその後、私のアプリにJSONを経由して送信されます - - hsvaまたはRGBAのいずれかを使用して

スペクトラムは、出力としてこれらのいずれかを与えるだろう、私はカラーピッカーで透明度を設定した場合、「」のみが表示されます

hsva(325,28%、19%、0.68) HSV(325、28%、19%)

RGBA(255、69、0、0.5) RGB(255、69、0)

どのようにデータを解析し、使用UIColorを作成することができアルファコンポーネントが必要かどうかわからないときは、正しいinitメソッドを使用してください。

私はNSSCannerを使用することができます考えて、私は入力がうまくだから私はこの道を行っているいくつかのアイデアを果たした

答えて

0

を知られているように正規表現がより良い選択肢かもしれない読んで説明に従いました - 便利な関数を使って色を初期化するための便利な関数を使って、最初のchracterを一致させてください。

私はこの特定の方法に関するフィードバックを得るために回答として投稿しています。発見するのに十分知識があります。

func CGFloatValue(value: String) -> CGFloat { 
guard let doubleValue = Double(value) else { 
    return CGFloat(0) 
} 
return CGFloat(doubleValue) 
} 
extension UIColor { 

convenience init(unknownValue: String) { 
    var colorType, colorValue : String 

    if unknownValue.hasPrefix("#") { 
     //value is hex 
     colorType="hex" 
     colorValue=String(unknownValue.characters.dropFirst()) 
    } 
    else { 
     let result = unknownValue.componentsSeparatedByString("(") 
     colorType = result[0] 
     colorValue = String(result[1].characters.dropLast()) 
    } 

    print(colorType,colorValue) 
    let inputs = colorValue.componentsSeparatedByCharactersInSet(NSCharacterSet.punctuationCharacterSet()) 

    switch(colorType) { 
     case "hsva": 
     self.init(hue: CGFloatValue(inputs[0]), saturation: CGFloatValue(inputs[1]), brightness: CGFloatValue(inputs[2]), alpha: CGFloatValue(inputs[3])) 
      break; 
     case "hex": 
      //this will be more complicated and based on hackingwithswift hex to uicolor article 

      //self.init(red:CGFloat((colour >> 24) & 0xff)/255, green:CGFloat((colour >> 16) & 0xff)/ 255,blue:CGFloat(((colour >> 8) & 0xff))/ 255,alpha: CGFloat(colour & 0xff))/255 
     fallthrough 
    default: 
     //return a default color? 
     self.init(red: 255.0,green: 255.0,blue: 255.0,alpha: 1.0) 
    } 
} 

}

関連する問題