我有一个看起来像这样的函数:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
// instantiate the cell
if(indexPath.row >=4 && indexPath.row <=5)
{
[CustomTableCell addGradient];
}
}
所以基本上,只有第 4 行和第 5 行应该有渐变背景。当 tableview 首次加载时,只有第 0 到 4 行是可见的,并且没有完美的渐变背景。当我向下滚动一点以查看第 4 行和第 5 行时,渐变出现在它们上面,这再次很棒。但是当我向上滚动到第一行时,突然间我在第一行看到了一个渐变!!!但我从未要求第 0 行有渐变!此外,当我向下滚动一点时,我看到渐变应用于某些行而不是其他行。为什么会这样?
这是有用的 addGradient 函数:
- (void) addGradient
{
if([self.layer.sublayers count] >0)
{
if([[self.layer.sublayers objectAtIndex:0] isKindOfClass:[CAGradientLayer class]])
return;
}
CAGradientLayer *gradient = [CAGradientLayer layer];
gradient.frame = self.bounds;
gradient.colors = [NSArray arrayWithObjects:(id)[UIColor blueColor].CGColor, (id)[UIColor redColor].CGColor, nil];
[self.layer insertSublayer:gradient atIndex:0];
}