web-dev-qa-db-fra.com

comment puis-je obtenir un cgcolor à partir des valeurs RVB?

J'essaie de créer un RGBCGColor personnalisé en utilisant Swift pour l'utiliser comme couleur de bordure pour un UIButton. J'ai essayé le code suivant mais la couleur n'est pas visible:

var red = UIColor(red: 100.0, green: 130.0, blue: 230.0, alpha: 1.0)
self.layer.borderColor = red.CGColor

Existe-t-il un moyen de créer un CGColor directement à partir des valeurs RVB?

27
alionthego

Vous devez donner des valeurs entre 0 et 1.0. Divisez donc les valeurs RVB par 255.

Changez votre code en

var red = UIColor(red: 100.0/255.0, green: 130.0/255.0, blue: 230.0/255.0, alpha: 1.0)
self.layer.borderColor = red.CGColor
66
Shruti

Vous pouvez obtenir cela sur une seule ligne dans Swift 3:

avLayer.backgroundColor = UIColor.red.CGColor
6
Mick Stupp

Sur Mac OS X, il y a CGColorCreateGenericRGB(), mais il n'existe pas sur iOS. Vous pouvez cependant utiliser CGColorCreate avec les paramètres appropriés.

self.layer.borderColor = CGColorCreate(CGColorSpaceCreateDeviceRGB(), [1.0, 0.5, 0.5, 1.0])

Les valeurs du tableau sont, par ordre d'apparence: rouge, vert, bleu et alpha. Tout comme UIColor :)

https://developer.Apple.com/library/ios/documentation/GraphicsImaging/Reference/CGColor/#//Apple_ref/c/func/CGColorCreate

6
Romain
UImage *newImage = [self imageWithColor:[UIColor colorWithRed:200/255. green:228/255. blue:194/255. alpha:0.99]];
1
Usharao

Peut-être que tout ce dont vous avez besoin est de définir le borderWidth, par défaut c'est 0, donc il n'est pas visible:

self.layer.borderWidth = 1.0

Juste au cas où vous pouvez définir le cornerRadius si vous en avez besoin arrondi ... pourrait être utile ;-)

self.layer.cornerRadius = 4.0
0
Matteo Piombo