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!

41
demandé sur E.A. Wilson 2012-11-05 03:48:53

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.

Référence ici.

103
répondu yfrancis 2014-05-25 08:41:04

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)];
25
répondu Geri 2014-01-23 00:52:07

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)];
5
répondu calimarkus 2014-05-25 13:51:33

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.

3
répondu SameSung Vs Iphone 2012-11-07 16:01:24

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)

3
répondu superarts.org 2018-09-09 13:54:16