次のような関数があります。
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
// instantiate the cell
if(indexPath.row >=4 && indexPath.row <=5)
{
[CustomTableCell addGradient];
}
}
したがって、基本的には、行 4 と 5 のみがグラデーションの背景を持つ必要があります。テーブルビューが最初にロードされると、行 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];
}