2017-06-21 15 views
2

私はUIButtonから値の代わりに色の名前を取得しようとしていますが、これを行う方法はありません。おかげで私は色の値を印刷していたときにスウィフトで色の名前を取得することは可能ですか?

私も値を設定するためにtintColorを使用していた値を取得する

clickButton.tintColor = UIColor.blue 

    var color = clickButton.tintColor 

私は(UIExtendedSRGBColorSpace 0 0 1 1)を取得はありとにかく私は、値の代わりに青得ることができます

+0

ハズレを書くことができ、あなたはUIColorの名前を取得することはできません、RGB値を取得することができます。そして、色の名前の使用はありません –

答えて

1

UIColorの「人間が判読可能な」名前をビルトインで取得することはできません。ただし、this postに記載されているように、RGBの値を取得できます。あなたが本当に色の名前を取得したい場合は

、あなたは@BoilingFireが彼らの答えで指摘したように、独自の辞書を構築することができます:

var color = clickButton.tintColor!  // it is set to UIColor.blue 
var colors = [UIColor.red:"red", UIColor.blue:"blue", UIColor.black:"black"] // you should add more colors here, as many as you want to support. 
var colorString = String() 

if colors.keys.contains(color){ 
    colorString = colors[color]! 
} 

print(colorString)  // prints "blue" 
+1

ニースの答え、これはあなたを助けるでしょう。 –

1

私はそれは可能ではないと思いますが、独自の辞書を作成し、その色のオブジェクトに対応するキーを検索することができます。 とにかく名前を持つ色はありません。

var colors = ["blue": UIColor.blue, ...] 
1

プロジェクトにこの拡張機能を追加

extension UIColor { 
    var name: String? { 
     switch self { 
     case UIColor.black: return "black" 
     case UIColor.darkGray: return "darkGray" 
     case UIColor.lightGray: return "lightGray" 
     case UIColor.white: return "white" 
     case UIColor.gray: return "gray" 
     case UIColor.red: return "red" 
     case UIColor.green: return "green" 
     case UIColor.blue: return "blue" 
     case UIColor.cyan: return "cyan" 
     case UIColor.yellow: return "yellow" 
     case UIColor.magenta: return "magenta" 
     case UIColor.orange: return "orange" 
     case UIColor.purple: return "purple" 
     case UIColor.brown: return "brown" 
     default: return nil 
     } 
    } 
} 

今、あなたは

print(UIColor.red.name) // Optional("red") 
関連する問題