У меня есть функция, которая выглядит примерно так:Почему cellForRowAtIndexPath иногда добавляет gradientLayer?
- (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];
}