我有一个.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];
)
但这不起作用......哪种语法是正确的?
答案 0 :(得分:3)
如果[activeItem color2]
返回方法名称(redColor
,yellowColor
等),您可以使用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];