2013-10-28 73 views
1

在我的表格視圖控制器的以下代碼中,如果我使用像[UIColor blueColor]這樣的「庫存」顏色,它可以正常工作,但是如果我嘗試使用RGBA值創建自定義顏色,它會失敗並且不會繪製任何物體, 。爲什麼我不能在ARC中使用自定義顏色創建CAGradientLayer?

這是因爲ARC在它可以被使用之前釋放CGColorRef嗎?我如何才能使用自定義顏色工作?

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath { 
    [cell setBackgroundColor:[UIColor clearColor]]; 

    CAGradientLayer *selectedGrad = [CAGradientLayer layer]; 
    selectedGrad.frame = cell.bounds; 

    UIColor* colorOne = [UIColor blueColor];//[UIColor colorWithRed:96/255 green:157/255 blue:227/255 alpha:1]; 
    UIColor* colorTwo = [UIColor greenColor];//[UIColor colorWithRed:54/255 green:123/255 blue:201/255 alpha:1]; 

    NSArray* colors = [NSArray arrayWithObjects:(id)colorOne.CGColor, colorTwo.CGColor, nil]; 

    selectedGrad.colors = colors; 
    selectedGrad.locations = [NSArray arrayWithObjects:@(0.0), @(1.0), nil]; 

    [cell setSelectedBackgroundView:[[UIView alloc] init]]; 
    [cell.selectedBackgroundView.layer insertSublayer:selectedGrad atIndex:0]; 
} 
+0

就像一個健全的檢查,確保'cell.selectedBackgroundView'設置後不是零。 – Ariel

回答

4

的問題是,當你做96/255它解釋值如int,導致0

試着寫的數值爲96.0/255.0創建的UIColor

+0

Aggh。我認爲編譯器會更聰明。 :/太習慣於生活在JavaScript/C#我猜。 – devios1

0

時,這是一個附加的正確方法RGB顏色:

[UIColor colorWithRed:0x63/255.0 green:0x4E/255.0 blue:0x42/255.0 alpha:1] 
相關問題