web-dev-qa-db-fra.com

Comment utiliser les jeux de couleurs du catalogue Assets

J'utilise habituellement UIColors personnalisé sur iOS à l'aide d'extensions avec Swift, mais maintenant, avec iOS11/XCode9, nous pouvons créer des jeux de couleurs. Comment pouvons-nous les utiliser?

Mise à jour - Astuce

Comme @ Cœur dit que nous pouvons glisser-déposer de couleur, et l'utiliser comme un objet UIColor. Une solution possible pourrait être l'utiliser comme extension:

 UIColor as an extension

Ou comme une constante:

 UIColor as a constant

Maintenant, je veux savoir si nous pouvons y accéder comme un accès UIImage à une image d'actif ou non, comme:

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

Source: WWDC 2017 Session 237 - Quoi de neuf dans MapKit


Mise en garde: la cible Deployment de votre projet doit être définie sur iOS 11.0.

45
user2421361

Version courte

Ajoutez un jeu de couleurs à un catalogue d'actifs, nommez-le et définissez votre couleur dans l'inspecteur d'attributs, puis appelez-le dans votre code avec UIColor(named: "MyColor").

Instructions complètes

  1. Dans la visionneuse du catalogue d’actifs, cliquez sur le bouton plus en bas à droite du panneau principal et choisissez Nouveau jeu de couleurs

    New Color Set menu

  2. Cliquez sur le carré blanc et sélectionnez l'inspecteur Attributes (icône la plus à droite dans le volet de droite).

  3. De là, vous pouvez nommer et choisir votre couleur.

    enter image description here

  4. Pour l'utiliser dans votre code, appelez-le avec UIColor(named: "MyColor"). Cela renvoie une valeur facultative. Vous devrez donc la dérouler dans la plupart des cas (il s'agit probablement de l'un des rares cas où une décompression forcée est acceptable, étant donné que la couleur existe dans votre catalogue de ressources).
13
robmathers
 // iOS
 let color = UIColor(named: "SillyBlue")

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

Vous devez utiliser UIColor(named: "appBlue").

Et vous pouvez créer une fonction dans l'extension UIColor pour un accès simple.

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

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 .rad:
        return UIColor(named: "appRad")
    case .seperatorColor:
        return UIColor(named: "appSeperatorColor")
    case .green:
        return UIColor(named: "appGreen") 
    }
}

Vous pouvez l'utiliser comme ça

userNameTextField.textColor = UIColor.appColor(.gray)
0
Hitesh Agarwal