У меня есть таблица пользовательских ячеек. В каждой ячейке я добавляю метку в качестве подпредставления и загружаю данные в метку. Я добавляю градиент в свой cellForRowAtIndexPath для каждой ячейки внутри блока if, где мы проверяем, является ли ячейка нулевой или нет. Он работает нормально. Но теперь у меня есть дополнительное требование, и проблема начинается здесь. Мне нужно проверить значения и применить эффект градиента для определенной метки в ячейке. Вот мой код.
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
static NSString *CellIdentifier = @"Cell";
NSNumberFormatter *formatter = [NSNumberFormatter new];
[formatter setNumberStyle:NSNumberFormatterDecimalStyle];
HistoryCustomCell *cell = (HistoryCustomCell*)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil)
{
cell = [[HistoryCustomCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] ;
CAGradientLayer *gradient = [CAGradientLayer layer];
gradient.frame = CGRectMake(cell.frame.origin.x + 2, cell.frame.origin.y, tableView.frame.size.width - 3, 44.0);
gradient.colors = [NSArray arrayWithObjects:(id)[[UIColor colorWithRed:228.0/255.0 green:228.0/255.0 blue:228.0/255.0 alpha:1] CGColor], (id)[[UIColor colorWithRed:254.0/255.0 green:254.0/255.0 blue:254.0/255.0 alpha:1]CGColor], nil];
[cell.layer insertSublayer:gradient atIndex:0];
}
NSMutableDictionary *dictValue = [arrHistoryValues objectAtIndex:indexPath.row];
tempBestEverValue = [dictValue objectForKey:@"bestEverValue"];
tempBestValue = [dictValue objectForKey:@"bestValue"];
cell.cell1.text = [dictValue objectForKey:@"year"];
NSString *janValue = [dictValue objectForKey:@"janValue"];
if ([janValue isEqualToString:@"(null)"]) {
janValue = @"";
cell.cell2.text = [NSString stringWithFormat:@"%@",janValue];
}
else
{
janValue = [formatter stringFromNumber:[NSNumber numberWithInteger:[janValue intValue]]];
cell.cell2.text = [NSString stringWithFormat:@"$%@",janValue];
}
if ([[dictValue objectForKey:@"janBest"] isEqualToString:[dictValue objectForKey:@"janValue"]])
{
cell.cell2.font = [UIFont boldSystemFontOfSize:12.0];
}
if ([[dictValue objectForKey:@"janValue"]intValue] == [tempBestEverValue intValue])
{
CAGradientLayer *gradient = [CAGradientLayer layer];
gradient.frame = cell.cell2.frame;
gradient.colors = [NSArray arrayWithObjects:(id)[[UIColor colorWithRed:165.0 green:239.0 blue:156.0 alpha:1.0] CGColor], (id)[[UIColor colorWithRed:140.0 green:203.0 blue:90.0 alpha:1.0] CGColor], nil];
[cell.layer insertSublayer:gradient atIndex:1];
}
else if ([[dictValue objectForKey:@"janValue"]intValue] == [tempBestValue intValue])
{
CAGradientLayer *gradient = [CAGradientLayer layer];
gradient.frame = cell.cell2.frame;
gradient.colors = [NSArray arrayWithObjects:(id)[[UIColor colorWithRed:173.0 green:251.0 blue:173.0 alpha:1.0] CGColor], (id)[[UIColor colorWithRed:181.0 green:255.0 blue:181.0 alpha:1.0] CGColor], nil];
[cell.layer insertSublayer:gradient atIndex:1];
}
NSString *febValue = [dictValue objectForKey:@"febValue"];
if ([febValue isEqualToString:@"(null)"]) {
febValue = @"";
cell.cell3.text = [NSString stringWithFormat:@"%@",febValue];
}
else
{
febValue = [formatter stringFromNumber:[NSNumber numberWithInteger:[febValue intValue]]];
cell.cell3.text = [NSString stringWithFormat:@"$%@",febValue];
}
if ([[dictValue objectForKey:@"febValue"]intValue] == [tempBestEverValue intValue])
{
CAGradientLayer *gradient = [CAGradientLayer layer];
gradient.frame = cell.cell3.frame;
gradient.colors = [NSArray arrayWithObjects:(id)[[UIColor colorWithRed:165.0/255.0 green:239.0/255.0 blue:156.0/255.0 alpha:1.0] CGColor], (id)[[UIColor colorWithRed:140.0/255.0 green:203.0/255.0 blue:90.0/255.0 alpha:1.0] CGColor], nil];
[cell.layer insertSublayer:gradient atIndex:1];
}
else if ([[dictValue objectForKey:@"febValue"]intValue] == [tempBestValue intValue])
{
CAGradientLayer *gradient = [CAGradientLayer layer];
gradient.frame = cell.cell3.frame;
gradient.colors = [NSArray arrayWithObjects:(id)[[UIColor colorWithRed:173.0/255.0 green:251.0/255.0 blue:173.0/255.0 alpha:1.0] CGColor], (id)[[UIColor colorWithRed:181.0/255.0 green:255.0/255.0 blue:181.0/255.0 alpha:1.0] CGColor], nil];
[cell.layer insertSublayer:gradient atIndex:1];
}
if ([[dictValue objectForKey:@"febBest"] isEqualToString:[dictValue objectForKey:@"febValue"]])
{
cell.cell3.font = [UIFont boldSystemFontOfSize:12.0];
}
return cell;
}
Теперь градиент не применяется должным образом, когда я перезагружаю таблицу. Это случайный выбор ячеек и применение градиента. Как правильно удалить градиент перед перезагрузкой таблицы. Ломаю голову уже несколько дней. Пожалуйста помоги.