如何将NSString转换为UIColor

时间:2011-11-22 14:23:45

标签: xcode string nsstring ios5 uicolor

我有一个pickerView,它有一个颜色组件。

我有一个textField(textOther),现在我有了明确定义的所有可用颜色的NSMutableArray。

如何将所有这些颜色(字符串!)传递给这些textField?

textField setTextColor只会设置一种颜色,但要将字符串传递给颜色我该怎么办?

谢谢!

3 个答案:

答案 0 :(得分:8)

最好创建一个将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 :(得分:1)

要从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];

答案 2 :(得分:0)

我认为最简单的方法是使用预定义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

希望这能回答你的问题!