在我的表格視圖控制器的以下代碼中,如果我使用像[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];
}
就像一個健全的檢查,確保'cell.selectedBackgroundView'設置後不是零。 – Ariel