Как конвертировать NSString в UIColor - PullRequest
3 голосов
/ 22 ноября 2011

У меня есть pickerView, который имеет компонент цветов.

У меня есть textField (textOther), теперь у меня есть NSMutableArray всех доступных цветов, которые явно определены.

Как передать все эти цвета (которые являются строками!) В эти textField?

textField setTextColor установит только один цвет, но для передачи строки в цвет, как мне это сделать?

Спасибо!

Ответы [ 3 ]

8 голосов
/ 26 сентября 2012

Лучше создать метод для преобразования NSString в UIColor. У вас должна быть строка NSString, например, с whiteColor или blueColor, и вы можете преобразовать ее следующим образом:

  -(UIColor *)getColor:(NSString*)col

  {

  SEL selColor = NSSelectorFromString(col);
  UIColor *color = nil;
  if ( [UIColor respondsToSelector:selColor] == YES) {

    color = [UIColor performSelector:selColor];
   }  
    return color;
  }
1 голос
/ 09 ноября 2015

Чтобы преобразовать NSString в UIColor:

NSString *redColorString = @"25";
NSString *greenColorString = @"82";
NSString *blueColorString = @"125";

UIColor *color = [UIColor colorWithRed:[redColorString floatValue]/255.0
                                 green:[greenColorString floatValue]/255.0
                                  blue:[blueColorString floatValue]/255.0
                                 alpha:1.0];
0 голосов
/ 22 ноября 2011

Я полагаю, что самый простой способ сделать это - создать NSDictionary с предопределенными экземплярами UIColor и отобразить их как пары ключ-значение;ключами является строка, представляющая цвет, а значением является фактический UIColor объект.

Так что, если вы хотите иметь как красный, так и синий, как возможные цвета (которые теперь в NSMutableArray, если яправильно), вы можете создать NSDictionary следующим образом:

NSArray * colorKeys = [NSArray arrayWithObjects:@"red", @"blue" nil];
NSArray * colorValues = [NSArray arrayWithObjects:[UIColor redColor], [UIColor blueColor], nil];
NSDictionary * colorMap = [NSDictionary dictionaryWithObjects:colorValues forKeys:colorKeys];

Если вы затем хотите передать цвет (учитывая строку AKA, ключ указанного цвета), вы можете просто сделать это:

NSString * chosenColor = textField.text; // extract desired color from input in textField
textField.textColor = [colorMap valueForKey:chosenColor]; // use this color string to find the UIColor element in the colorMap

Надеюсь, это ответит на ваш вопрос!

...