2013-02-22 74 views
0

正常,我经常设置backgound颜色: aView.backgroundColor = [UIColor redColor];如何通过指向颜色名称的指针设置颜色?

现在我把所有的颜色名称在一个NSArray:

colorsArray = [[NSMutableArray alloc] initWithObjects: 
       @"blackColor", 
       @"darkGrayColor", 
       @"lightGrayColor", 
       @"whiteColor", 
       @"grayColor", 
       @"redColor", 
       @"greenColor", 
       @"blueColor", 
       @"cyanColor", 
       @"yellowColor", 
       @"magentaColor", 
       @"orangeColor", 
       @"purpleColor", 
       @"brownColor", 
       nil]; 

而且我想通过一个NSString的指针一样,

NSInteger i = 0; 
for (aView in viewArray) { 
    NSString *colorName = [colorsArray objectAtIndex:i]; 
    aView.backgroundColor = color with colorName;//Can't find a method to set 
    i++; 
} 

设置背景我检查的UIColor类,不能找到任何方法用指向colorName的指针设置颜色。 请帮忙!任何其他方式?谢谢!

回答

5

反射和医药的一点点就可以了下来...

NSInteger i = 0; 
for (aView in viewArray) { 
    NSString *colorName = [colorsArray objectAtIndex:i]; 
    aView.backgroundColor = [[UIColor class] performSelector:NSSelectorFromString(colorName)]; 
    i++; 
} 
+1

+1没错。打了我40秒:@ – trojanfoe 2013-02-22 15:09:37

+0

@trojanfoe谢谢:) – 2013-02-22 15:10:06

+0

+1我不能赢得H2CO3和trojanfoe ....弓对你们两个:) – 2013-02-22 15:10:25

2
aView.backgroundColor = [UIColor performSelector:NSSelectorFromString(colorName)]; 
+0

我没有复制,我们的答案在同一时间! – 2013-02-22 15:11:42

+0

谢谢!只有1分钟后!我接受基于时间。 – 2013-02-22 15:13:52

+0

@AnoopVaidya我最初的编辑和你的完全一样(在我意识到错误并删除了它之前,有了@selector('bit)的错误信息,这可能是巧合,如果有的话,我表示歉意 – trojanfoe 2013-02-22 15:14:51