J'ai une application de dessin iOS avec des boutons qui permettent à un utilisateur de choisir les couleurs à dessiner. Puisque mon pinceau utilise des valeurs RVB mais que mes constantes de couleur sont des UIColors, j'ai besoin de convertir. J'ai essayéComment puis-je accéder aux valeurs RVB d'un UIColor?
private var currentButton: UIButton? {
willSet{
currentButton?.layer.borderWidth = 0
}
didSet{
currentButton?.layer.borderWidth = 2
let index = (currentButton?.tag)! - 1
drawView.brush.blue = colors[index].ciColor.blue //Here is where I get the error
drawView.brush.green = colors[index].ciColor.green
drawView.brush.red = colors[index].ciColor.red
}
}
Ce que j'ai trouvé dans une autre question StackOverflow. Cependant, lorsque je tente d'obtenir une valeur RVB en ligne 8 Je reçois cette erreur:
Terminating app due to uncaught exception
'NSInvalidArgumentException', reason: '*** -CIColor not defined for the UIColor UIExtendedSRGBColorSpace 1 1 1 1; need to first convert colorspace.'
Il dit clairement que je dois convertir l'espace couleur. Mais CIColor.colorSpace
est seulement disponible. Qu'est-ce que je fais mal?
'var ciColor: CIColor {get} Description de \t La couleur de l'image de base associée au récepteur. Cette propriété lève une exception si l'objet de couleur n'a pas été initialisé avec une couleur Core Image. –
Vous pouvez utiliser l'initialiseur CoreImage.CIColor pour créer une nouvelle couleur à partir de votre UIColor 'CoreImage.CIColor (color: colors [index]). Blue 'avec l'avantage qu'il ne retourne pas un optionnel. –