我定义了以下常量,每一个都代表一个 UIColor:
// Purple
#define PURPLE_COLOR_DARK [UIColor colorWithRed: 0.42 green: 0.25 blue: 0.60 alpha: 1.0]
#define PURPLE_COLOR_LIGHT [UIColor colorWithRed: 0.78 green: 0.47 blue: 0.72 alpha: 1.0]
// Blue
#define BLUE_COLOR_DARK [UIColor colorWithRed: 0.00 green: 0.46 blue: 0.70 alpha: 1.0]
#define BLUE_COLOR_LIGHT [UIColor colorWithRed: 0.00 green: 0.75 blue: 0.88 alpha: 1.0]
// Magenta
#define MAGENTA_COLOR_DARK [UIColor colorWithRed: 0.75 green: 0.00 blue: 0.28 alpha: 1.0]
#define MAGENTA_COLOR_LIGHT [UIColor colorWithRed: 1.00 green: 0.32 blue: 0.61 alpha: 1.0]
问题
如何使用NSString
like@"purple"
或获取相关的“X_COLOR_DARK”或“X_COLOR_LIGHT”常量@"blue"
?@"magenta"
甚至可以直接这样做吗?
例子
这是错误的,但应该更清楚地说明我的要求。在这个例子中,我有字符串@"blue"
并且想要导出BLUE_COLOR_DARK
和BLUE_COLOR_LIGHT
颜色值。
NSString *color = @"blue";
UIColor *darkColor = (UIColor *)[[NSString stringWithFormat: @"%@_COLOR_DARK", color] uppercaseString];
// Debugging
NSLog(@"%@", darkColor); // BLUE_COLOR_DARK
NSLog(@"%hhd", [lightColor isKindOfClass: [UIColor class]]); // 0
NSLog(@"%hhd", [lightColor isKindOfClass: [NSString class]]); // 1
跟进
请注意, UIColor 不一定与回答问题相关,尽管它确实对我的情况有所帮助。更具体地说,我在询问是否可以将与定义的名称(例如@"PURPLE_COLOR_DARK"
and #define PURPLE_COLOR_DARK
)匹配的字符串解释为定义的名称,而不是直接使用定义的名称。