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:
Ou comme une constante:
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")
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.
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")
.
Dans la visionneuse du catalogue d’actifs, cliquez sur le bouton plus en bas à droite du panneau principal et choisissez Nouveau jeu de couleurs
Cliquez sur le carré blanc et sélectionnez l'inspecteur Attributes (icône la plus à droite dans le volet de droite).
De là, vous pouvez nommer et choisir votre couleur.
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). // iOS
let color = UIColor(named: "SillyBlue")
// macOS
let color = NSColor(named: "SillyBlue")
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)