64 votes

Créer une couleur RVB dans Xcode

J'utilise les valeurs RVB d'une couleur dans Photoshop et j'utilise les mêmes dans Xcode. Les valeurs sont : Color-R-160,G-97,B-5... La couleur dans Photoshop apparaît jaunâtre mais dans Xcode, lorsque j'ai utilisé les valeurs RVB de la couleur, je n'ai pas eu besoin de les utiliser.

myLabel.textColor = [UIColor colorWithRed:160 green:97 blue:5 alpha:1] ;

la couleur apparaît blanchâtre.

Pourquoi cette différence ?

200voto

iPrabu Points 7216

Objectif-C

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

myLabel.textColor= [UIColor colorWithRed:(160/255.0) green:(97/255.0) blue:(5/255.0) alpha:1] ;

Mise à jour :

Vous pouvez également utiliser cette macro

#define Rgb2UIColor(r, g, b)  [UIColor colorWithRed:((r) / 255.0) green:((g) / 255.0) blue:((b) / 255.0) alpha:1.0]

et vous pouvez appeler dans n'importe quelle classe comme ceci

 myLabel.textColor = Rgb2UIColor(160, 97, 5);

Swift

C'est la couleur normale du synaxe

myLabel.textColor = UIColor(red: (160/255.0), green: (97/255.0), blue: (5/255.0), alpha: 1.0) 
//The values should be between 0 to 1

Swift n'est pas très convivial avec les macros

Les macros complexes sont utilisées en C et en Objective-C mais n'ont pas d'équivalent. en Swift. Les macros complexes sont des macros qui ne définissent pas de constantes, y compris les macros entre parenthèses, de type fonction. Vous utilisez les macros complexes en C et en Objective-C pour éviter les contraintes de vérification de type ou pour éviter de retaper de grandes quantités de boites de dialogue. de retaper de grandes quantités de code passe-partout. Cependant, les macros peuvent rendre débogage et le remaniement du code. En Swift, vous pouvez utiliser les fonctions et les génériques pour obtenir les mêmes résultats sans aucun compromis. Par conséquent, les macros complexes présentes dans les fichiers sources C et Objective-C ne sont pas mises à la disposition de votre code Swift.

Nous utilisons donc une extension pour cela

extension UIColor {
    convenience init(_ r: Double,_ g: Double,_ b: Double,_ a: Double) {
        self.init(red: r/255, green: g/255, blue: b/255, alpha: a)
    }
}

Vous pouvez l'utiliser comme

myLabel.textColor = UIColor(160.0, 97.0, 5.0, 1.0)

1 votes

Quel est l'intérêt d'avoir une valeur de couleur fractionnelle ? Je ne peux pas sortir une telle valeur dans Photoshop ?

4 votes

@nipponese : La raison pour laquelle on utilise des valeurs de couleur rationnelles est que cela rend la multiplication des canaux plus facile et plus rapide. C'est utilisé pour le blending par exemple. UIColor représente une couleur RGB(A) utilisant la plage [0..1]. Les calculs ci-dessus consistent simplement à mettre à l'échelle chaque canal de la plage [0..255] à la plage [0..1]. Dans Photoshop, vous utilisez la plage [0 255] (par ex : rgba(160, 97, 5, 1) ), ou son équivalent hexadécimal (par ex : #A06105FF ).

0 votes

J'ai juste besoin de la macro :)

25voto

jweyrich Points 10002

Vous avez déjà obtenu la bonne réponse, mais si vous n'aimez pas la UIColor interface comme moi, vous pouvez le faire :

#import "UIColor+Helper.h"
// ...
myLabel.textColor = [UIColor colorWithRGBA:0xA06105FF];

UIColor+Helper.h :

#import <UIKit/UIKit.h>

@interface UIColor (Helper)
+ (UIColor *)colorWithRGBA:(NSUInteger)color;
@end

UIColor+Helper.m :

#import "UIColor+Helper.h"

@implementation UIColor (Helper)

+ (UIColor *)colorWithRGBA:(NSUInteger)color
{
    return [UIColor colorWithRed:((color >> 24) & 0xFF) / 255.0f
                           green:((color >> 16) & 0xFF) / 255.0f
                            blue:((color >> 8) & 0xFF) / 255.0f
                           alpha:((color) & 0xFF) / 255.0f];
}

@end

5voto

Allamaprabhu Points 514

Oui, ios supporte les valeurs RGB entre 0 et 1 seulement sa plage proche est [0,1].

5voto

hfossli Points 6815

Plugin sélecteur de couleurs pour Interface Builder

Panic propose un sélecteur de couleurs qui fonctionne bien avec IB : http://panic.com/~wade/picker/

Plugin Xcode

Celui-ci vous offre une interface graphique pour choisir les couleurs : http://www.youtube.com/watch?v=eblRfDQM0Go

Objectif-C

UIColor *color = [UIColor colorWithRed:(160/255.0) green:(97/255.0) blue:(5/255.0) alpha:1.0];

Swift

let color = UIColor(red: 160/255, green: 97/255, blue: 5/255, alpha: 1.0)

Pods et bibliothèques

Il y a une belle capsule nommée MPColorTools : https://github.com/marzapower/MPColorTools

0voto

JmB Points 99

Les valeurs sont déterminées par le bit de l'image. 8 bits 0 à 255

16 bits...un nombre ridicule...0 à 65 000 environ.

32 bit sont 0 à 1

J'utilise .004 avec les images 32 bits... cela donne 1.02 comme résultat lorsqu'il est multiplié par 255.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X