如何将NSString转换为UIColor

3

我有一个包含颜色组件的pickerView。

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

如何将这些字符串类型的颜色全部传递给textField?

textField的setTextColor方法只能设置单一颜色,但如何将字符串转换为颜色呢?

谢谢!

3个回答

8

最好创建一个方法将NSString转换为UIColor。您应该拥有一个例如"whiteColor"或"blueColor"的NSString,并可以按照以下方式进行转换:

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

  {

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

    color = [UIColor performSelector:selColor];
   }  
    return color;
  }

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

0

我认为最干净的方法是使用预定义UIColor实例创建一个NSDictionary,并将它们映射为键值对;键是代表颜色的字符串,值是实际的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];

如果您想传递一个颜色(给定一个字符串,也就是该颜色的键),您可以简单地执行以下操作:
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

希望这个回答解决了你的问题!

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接