在我的表视图控制器的以下代码中,如果我使用像[UIColor blueColor]
这样的“库存”颜色,它可以正常工作,但是如果我尝试使用RGBA值创建自定义颜色,它会失败并且不会除了纯黑色之外什么都画。
这是因为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 :(得分:4)
问题是,当你执行96/255
时,它会将值解释为int,结果为0
尝试在创建UIColor时将值写为96.0/255.0
答案 1 :(得分:0)
这是添加RGB颜色的正确方法:
[UIColor colorWithRed:0x63/255.0 green:0x4E/255.0 blue:0x42/255.0 alpha:1]