Comment obtenir le Code RGB (INT) à partir d'un UIColor en Swift
Je voudrais obtenir la Valeur RVB d'un UIColor dans Swift:
let swiftColor = UIColor(red: 1, green: 165/255, blue: 0, alpha: 1)
println("RGB Value is:");
println(swiftColor.getRGB()); <<<<<< How to do that ?
En Java, je le ferais comme suit:
Color cnew = new Color();
int iColor = cnew.rgb(1, 165/255, 0);
System.out.println(iColor);
Comment pourrais-je obtenir cette valeur?
Vous devez vous connecter pour publier un commentaire.
La Java
getRGB()
retourne un entier représentant la couleur par défaut est l'espace couleur sRGB (bits 24-31 sont alpha, 16-23 sont rouges, 8-15 sont le vert, le 0 à 7 sont en bleu).
UIColor
n'a pas une méthode, mais vous pouvez définir votre propre:Utilisation:
Noter que cela ne fonctionne que si le
UIColor
a été définie dans un"RVB-compatible" espace couleur (RVB, TSL ou niveaux de Gris). Il peut
échouer si la couleur a été créé à partir d'un
CIColor
ou un motifl'image, dans ce cas
nil
est retourné.Remarque: Comme @vonox7 remarqué, la valeur retournée peut être négatif
sur les plates-formes 32 bits (qui est aussi le cas avec le Java
getRGB()
méthode).Si ce n'est pas voulu, remplacer
Int
parUInt
ouInt64
.La conversion inverse est
let red = (rgb >> 16) & 0xFF
. Mais si vous voulez les valeurs séparément, alors il serait plus facile de calculer l'iRed, iGreen, iBlue, iAlpha comme dans la méthode ci-dessus et de ne pas les combiner à un seul nombre.Int
doit être remplacé parInt64
.getRGB
méthode, qui est mentionné dans la question, se comporte de la même.) Mais j'ai ajouté une remarque à préciser que, merci pour les commentaires!De Martin R réponse :La méthode pourrait également renvoyer un nommé n-uplet (Swift 2 fonction):
255.0
et le dernier tuple composant doit être de typeDouble
.Int
, et vous n'avez pas multiplier par 255, vous ne pourrez jamais obtenir 0 ou 1, qui sont pratiquement invisibles.Swift 3.0 IOS 10
A écrit une extension que vous pouvez utiliser. J'ai choisi de retourner les valeurs que
CGFloat
s plutôt que deInt
s parce queCGFloat
est ce que la méthode init de UIColor prendNote: Swift 3.1/iOS 10 compatible, peut ne pas fonctionner dans iOS 9 UIColor.cgColor.les composants peuvent ne pas être disponibles
Swift 4. Obtenir le code hex (UInt) à partir de UIColor:
Rapide vous pouvez utiliser la Couleur Littéral, pour obtenir des Couleurs RVB.
Juste comme ça
J'espère que ce sera utile à quelqu'un.