584 votes

Comment puis-je créer un UIColor à partir d'une chaîne hexadécimale?

Comment puis-je créer un UIColor partir d'un format de chaîne hexadécimal, tel que #00FF00 ?

742voto

Tom Points 3501

J’ai trouvé la façon la plus simple pour cela est associé à une macro. Simplement l’inclure dans votre tête, et il est disponible tout au long de votre projet.

UIColor macro avec %valeurs hexa%

390voto

darrinm Points 2976

Une solution concise :

204voto

Micah Hainline Points 6629

J’ai une solution qui est 100 % compatible avec les chaînes de format hexadécimal utilisés par Android, ce que j’ai trouvé très utile lorsque vous effectuez le développement mobile multiplateforme. Il me permet d’utiliser un palais de couleur pour les deux plates-formes. N’hésitez pas à réutiliser sans attribution, ou sous licence Apache, si vous préférez.

72voto

Tommie C. Points 1839

Il y a un joli post sur la façon de s'attaquer à l'OP de la question de l'extraction d'une UIColor à partir d'une chaîne hexadécimale. La solution présentée ci-dessous est différent des autres car il prend en charge les valeurs de chaîne qui peut inclure '0x' ou '#' précédé de la chaîne hexadécimale de la représentation... (voir utilisation)

Voici les principaux bits..

- (UIColor *)getUIColorObjectFromHexString:(NSString *)hexStr alpha:(CGFloat)alpha
{
  // Convert hex string to an integer
  unsigned int hexint = [self intFromHexString:hexStr];

  // Create color object, specifying alpha as well
  UIColor *color =
    [UIColor colorWithRed:((CGFloat) ((hexint & 0xFF0000) >> 16))/255
    green:((CGFloat) ((hexint & 0xFF00) >> 8))/255
    blue:((CGFloat) (hexint & 0xFF))/255
    alpha:alpha];

  return color;
}

Méthode d'aide..

- (unsigned int)intFromHexString:(NSString *)hexStr
{
  unsigned int hexInt = 0;

  // Create scanner
  NSScanner *scanner = [NSScanner scannerWithString:hexStr];

  // Tell scanner to skip the # character
  [scanner setCharactersToBeSkipped:[NSCharacterSet characterSetWithCharactersInString:@"#"]];

  // Scan hex value
  [scanner scanHexInt:&hexInt];

  return hexInt;
}

Utilisation:

NSString *hexStr1 = @"123ABC";
NSString *hexStr2 = @"#123ABC";
NSString *hexStr3 = @"0x123ABC";

UIColor *color1 = [self getUIColorObjectFromHexString:hexStr1 alpha:.9];
NSLog(@"UIColor: %@", color1);

UIColor *color2 = [self getUIColorObjectFromHexString:hexStr2 alpha:.9];
NSLog(@"UIColor: %@", color2);

UIColor *color3 = [self getUIColorObjectFromHexString:hexStr3 alpha:.9];
NSLog(@"UIColor: %@", color3);

Référence Complète De L'Article

26voto

Adam Wright Points 31715

Il n’y a aucune conversion de builtin d’une chaîne hexadécimale à un UIColor (ou CGColor) que je connais. Toutefois, vous pouvez facilement écrire un couple de fonctions à cet effet - par exemple, voir développement iphone pour accéder aux composants uicolor

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