Как преобразовать NSString в UIColor

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

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

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

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

Спасибо!


person Xander    schedule 22.11.2011    source источник


Ответы (3)


Я полагаю, что самый чистый способ сделать это - создать NSDictionary с предопределенными экземплярами UIColor и сопоставить их как пары ключ-значение; keys — это строка, представляющая цвет, а value — фактический объект 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

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

person Warkst    schedule 22.11.2011

Лучше создать метод для преобразования 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;
  }
person Aitul    schedule 26.09.2012

Чтобы преобразовать из 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];
person Fatih Aksu    schedule 09.11.2015