Цель C: Как добавить цвет во всю ячейку (с индикатором раскрытия)
Я пытаюсь добавить цвет фона в свою ячейку, но не смог раскрасить часть с индикатором раскрытия (см. снимок экрана ниже)
![enter image description here]()
Что я могу сделать, чтобы покрасить всю ячейку? Моя реализация выглядит следующим образом.
cell.contentView.backgroundColor = [UIColor colorWithHexString:@"#FFFFCC"];
//Clear colors for labels
cell.textLabel.backgroundColor = [UIColor clearColor];
cell.detailTextLabel.backgroundColor = [UIColor clearColor];
Ответы
Ответ 1
UITableViewCell подклассы UIView; вы можете установить свой цвет фона так же, как и любые другие виды. Ячейки в "сгруппированном" стилеэтническом представлении таблицы требуют еще немного работы, но это не похоже на то, что вы используете это, поэтому:
cell.backgroundColor = [UIColor colorWithHexString:@"#FFFFCC"];
Ответ 2
Мой код использует (в самой ячейке) self.backgroundColor, поэтому вы должны использовать cell.backgroundColor вместо cell.contentView.backgroundColor. ContentView не включает в себя представление индикатора выбора, о котором вы догадались, я полагаю;)
Если вы хотите, чтобы он менял цвета, если выбрано, используйте selectedBackgroundView.backgroundColor
Ответ 3
цвет uiview с теми же границами, что и ячейка, и добавьте его как subview
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
}
UIView *colorView = [cell viewWithTag:200];
if(!colorView){
colorView = [[[UIView alloc] initWithFrame:CGRectMake(0, 0, tableView.frame.size.width, 44)] autorelease];
colorView.backgroundColor = [UIColor redColor];
colorView.tag = 200;
[cell addSubview:colorView];
}
return cell;
}
затем добавьте все ваши подзоны в это цветное представление.
Ответ 4
Принятый ответ не сработал у меня, но работает следующий код:
[cell.contentView setBackgroundColor:[UIColor whiteColor]];
Надеюсь, это поможет кому-то
Ответ 5
Это подтолкнуло меня. Я попробовал несколько разных подходов в методе cellForRowAtIndexPath. Я, наконец, нашел способ сделать это, чтобы переопределить метод willDisplayCell следующим образом:
- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
{
if(indexPath.row % 2) {
cell.backgroundColor = [UIColor whiteColor];
} else {
cell.backgroundColor = [UIColor colorWithRed:225.0/255.0 green:225.0/255.0 blue:225.0/255.0 alpha:1.0];
}
}
Ответ 6
UIImageView
UIImageView с изображением шеврона с правой стороны. Предпочтительно в раскадровке, но ее можно легко управлять в коде, присоединяя ее к представлению содержимого.
Ответ 7
Будучи своим подклассом UIView
, вы должны установить цвет фона аксессуара:
cell.accessoryView.backgroundColor = [UIColor clearColor];
или
cell.accessoryView.backgroundColor = [UIColor colorWithHexString:@"#FFFFCC"];