web-dev-qa-db-ja.com

アセットカタログカラーセットの使用方法

通常、iOSでSwiftの拡張機能を使用してカスタムUIColorsを使用しますが、iOS11/XCode9では色セットを作成できます。どのように使用できますか?

更新-ヒント

@Cœurが言うように、de colorをドラッグ&ドロップし、UIColorオブジェクトのように使用でき、可能な解決策は拡張機能として使用できます。

UIColor as an extension

または定数として:

UIColor as a constant

次のように、アセットイメージへのUIImageアクセスのようにアクセスできるかどうかを知りたいです。

UIImage(named: "image-name") -> UIColor(named: "color-name")
45
elGeekalpha
UIColor(named: "myColor") 

出典: WWDC 2017セッション237-MapKitの新機能


警告:プロジェクトのDeployment TargetはiOS 11.0に設定する必要があります。

55
user2421361

(質問の更新に対する短い答え:Xcode 9.0には UIColor(named: "MyColor") があります)

元の質問に答える:

  1. カラーセットを作成します

enter image description here

  1. スニペットの中から色を見つけて、ドラッグアンドドロップします

enter image description here

  1. ソースコードを見ると、色リテラルに変換されます。

    #colorLiteral(red: 0, green: 0.6378085017, blue: 0.8846047521, alpha: 1)

赤、緑、青の値がどのように異なるかに気づきましたか?色空間Display P3を使用してそれらを定義したが、colorLiteralは色空間sRGBを使用しているためです。

36
Cœur

短縮版

カラーセットをアセットカタログに追加し、名前を付けて、属性インスペクターで色を設定し、UIColor(named: "MyColor")を使用してコードで呼び出します。

完全な手順

  1. アセットカタログビューアで、メインパネルの右下にあるプラスボタンをクリックし、新しいカラーセットを選択します

    New Color Set menu

  2. 白い四角をクリックして、Attributes Inspector(右ペインの右端のアイコン)を選択します

  3. そこから名前を付けて色を選択できます。

    enter image description here

  4. コードで使用するには、UIColor(named: "MyColor")で呼び出します。これはオプションを返すので、ほとんどの場合、展開する必要があります(これはおそらく、アセットカタログに色が存在することがわかっていれば、強制的に展開できる数少ないケースの1つです)。
15
robmathers

UIColor(named: "appBlue")を使用する必要があります。

また、簡単なアクセスのためにUIColor拡張機能で関数を作成できます。

enum AssetsColor {
   case yellow
   case black
   case blue
   case gray
   case green
   case lightGray
   case seperatorColor
   case red
}

extension UIColor {

static func appColor(_ name: AssetsColor) -> UIColor? {
    switch name {
    case .yellow:
        return UIColor(named: "appYellow")
    case .black:
        return UIColor(named: "appBlack")
    case .blue:
        return UIColor(named: "appBlue")
    case .gray:
        return UIColor(named: "appGray")
    case .lightGray:
        return UIColor(named: "appLightGray")
    case .red:
        return UIColor(named: "appRad")
    case .seperatorColor:
        return UIColor(named: "appSeperatorColor")
    case .green:
        return UIColor(named: "appGreen") 
    }
}

このように使用できます

userNameTextField.textColor = UIColor.appColor(.gray)
7
Hitesh Agarwal
 // iOS
 let color = UIColor(named: "SillyBlue")

 // macOS
 let color = NSColor(named: "SillyBlue")
4
Ashish

この方法で簡単にアクセスできます(Swift 4)

enum AssetsColor: String {
    case backgroundGray
    case blue
    case colorAccent
    case colorPrimary
    case darkBlue
    case yellow
}

extension UIColor {
    static func appColor(_ name: AssetsColor) -> UIColor? {
         return UIColor(named: name.rawValue)
    }
}
0
Bola Ibrahim