2013-02-22 65 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