如何设置[UIColor [variable here]]?

时间:2014-03-06 01:53:07

标签: ios objective-c uicolor

我有一个.plist文件,其中包含一个带字典的数组,其中每个条目都有一个键值对“color1:abc”和“color2:xyz”。 “abc”和“xyz”始终是标准的iOS颜色,如“redColor”或“yellowColor”等。

我的应用程序有.plist数组中的“activeItem”,我想将color1和color2设置为视图的背景,所以我尝试了类似的东西:

self.view.backgroundColor = [UIColor [activeItem color2]];

(而不是:self.view.backgroundColor = [UIColor redColor];

但这不起作用......哪种语法是正确的?

3 个答案:

答案 0 :(得分:3)

如果[activeItem color2]返回方法名称(redColoryellowColor等),您可以使用performSelector:

SEL selector = NSSelectorFromString([activeItem color2]); 
self.view.backgroundColor = [UIColor performSelector:selector];

答案 1 :(得分:0)

您必须实现一个解释字符串值并返回相应颜色的方法。

UIColor *colorWithName: NSString *name
{
   if ([@"redColor" isEqualToString: name])
      return [UIColor redColor];
   else if (...)
      ...
}

或者将命名颜色放入名为namedColors的NSDictionary中,然后按名称查找它们。

答案 2 :(得分:0)

创建班级类别。

创建customColor.h文件,例如:

@interface UIColor (customColor)

+(UIColor*)color1;
+(UIColor*)color2;

@end

@implementation UIColor (customColor)

+(UIColor*)color1
{
    return [UIColor colorWithRed:1.0 green:1.0 blue:1.0 alpha:1.0];
}

+(UIColor*)color2
{
    return [UIColor colorWithRed:1.0 green:1.0 blue:1.0 alpha:1.0];
}

@end

然后你可以使用:

#import customColor.h
...
UIColor *neededColor = [UIColor color1];