Comment créer un UIColor à partir de RGBA?
Je veux utiliser NSAttributedString
dans mon projet, mais quand j'essaie de définir la couleur, qui n'est pas de l'ensemble standard(redColor
, blackColor
, greenColor
etc.) UILabel
affiche ces lettres en couleur blanche.
Voici ma ligne de ce code.
[attributedString addAttribute:NSForegroundColorAttributeName
value:[UIColor colorWithRed:66
green:79
blue:91
alpha:1]
range:NSMakeRange(0, attributedString.length)];
J'ai essayé de faire de la couleur avec CIColor
de Core Image framework, mais il a montré les mêmes résultats.
Que dois-je changer dans mon code pour l'exécuter correctement?
Thx pour les réponses les gars!
5 réponses
Vos valeurs sont incorrectes, vous devez diviser chaque valeur de couleur par 255.0.
[UIColor colorWithRed:66.0f/255.0f
green:79.0f/255.0f
blue:91.0f/255.0f
alpha:1.0f];
L'état docs:
+ (UIColor *)colorWithRed:(CGFloat)red
green:(CGFloat)green
blue:(CGFloat)blue
alpha:(CGFloat)alpha
Les Paramètres
Rouge Le composant rouge de l'objet couleur, spécifié comme une valeur comprise entre 0.0 et 1.0.
Vert Le composant vert de l'objet couleur, spécifié comme une valeur comprise entre 0.0 et 1.0.
Bleu Le composant bleu de l'objet couleur, spécifié comme une valeur comprise entre 0.0 et 1.0.
Alpha Le valeur d'opacité de l'objet couleur, spécifiée comme une valeur comprise entre 0.0 et 1.0.
Une de mes macros préférées, aucun projet sans:
#define RGB(r, g, b) [UIColor colorWithRed:(float)r / 255.0 green:(float)g / 255.0 blue:(float)b / 255.0 alpha:1.0]
#define RGBA(r, g, b, a) [UIColor colorWithRed:(float)r / 255.0 green:(float)g / 255.0 blue:(float)b / 255.0 alpha:a]
En Utilisant comme:
[attributedString addAttribute:NSForegroundColorAttributeName
value:RGB(66, 79, 91)
range:NSMakeRange(0, attributedString.length)];
UIColor
utilise une plage de 0 à 1,0, pas des entiers à 255.. Essayez ceci:
// create color
UIColor *color = [UIColor colorWithRed:66/255.0
green:79/255.0
blue:91/255.0
alpha:1];
// use in attributed string
[attributedString addAttribute:NSForegroundColorAttributeName
value:color
range:NSMakeRange(0, attributedString.length)];
Veuillez essayer le code
[attributedString addAttribute:NSForegroundColorAttributeName value:[UIColor colorWithRed:77.0/255.0f green:104.0/255.0f blue:159.0/255.0f alpha:1.0] range:NSMakeRange(0, attributedString.length)];
Comme
Label.textColor=[UIColor colorWithRed:77.0/255.0f green:104.0/255.0f blue:159.0/255.0f alpha:1.0];
Les composants RVB D'UIColor sont mis à l'échelle entre 0 et 1, pas jusqu'à 255.
Depuis que @ Jaswanth Kumar a demandé, voici la version Swift
de LSwift :
extension UIColor {
convenience init(rgb:UInt, alpha:CGFloat = 1.0) {
self.init(
red: CGFloat((rgb & 0xFF0000) >> 16) / 255.0,
green: CGFloat((rgb & 0x00FF00) >> 8) / 255.0,
blue: CGFloat(rgb & 0x0000FF) / 255.0,
alpha: CGFloat(alpha)
)
}
}
Utilisation: let color = UIColor(rgb: 0x112233)