我有一个包含颜色组件的pickerView。
我有一个textField(textOther),现在我有一个NSMutableArray,其中列出了所有明确定义的可用颜色。
如何将这些字符串类型的颜色全部传递给textField?
textField的setTextColor方法只能设置单一颜色,但如何将字符串转换为颜色呢?
谢谢!
最好创建一个方法将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;
}
将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];
我认为最干净的方法是使用预定义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