Фон ячейки и аксессуар

Я пытаюсь установить фон ячейки своего UITableViewCells, но я борюсь с цветом фона UIAccessoryView. Это не меняется.

Может ли кто-нибудь помочь мне сделать цвет фона UIAccessoryView прозрачным (или вообще любым другим цветом)?

Это мой код

cell.textLabel.backgroundColor = [UIColor clearColor];
cell.accessoryView.backgroundColor = [UIColor clearColor];
cell.detailTextLabel.backgroundColor = [UIColor clearColor];
cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;

if(indexPath.row % 2) {
     cell.contentView.backgroundColor = [UIColor clearColor];
}
else {
    cell.contentView.backgroundColor = [UIColor redColor];
}

Вот изображение, иллюстрирующее проблему

UIAccessoryView не меняет цвет фона.


person simonbs    schedule 19.03.2011    source источник


Ответы (3)


Вам нужно будет установить свойство backgroundView UITableViewCell. Например:

UIView* myBackgroundView = [[[UIView alloc] initWithFrame:CGRectZero] autorelease];
myBackgroundView.backgroundColor = [UIColor redColor];
myCell.backgroundView = myBackgroundView;

Если вам нужно что-то более необычное, например красный градиентный фон, вы должны реализовать подкласс UIView, который рисует градиент в drawRect: и использовать его в качестве backgroundView.

Вы также можете установить свойство selectedBackgroundView, если хотите настроить внешний вид выбранной ячейки таблицы.

person Darren    schedule 19.03.2011
comment
Потрясающий! Это работает, и это намного проще! Хорошая идея с градиентом и selectedBackgroundView Большое спасибо! - person simonbs; 19.03.2011
comment
Большое спасибо ... Застрял здесь надолго, и ваш ответ был первым, который решил эту проблему. :) - person Git.Coach; 15.06.2013

В функции

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

Используйте следующий код

cell.contentView.superview.backgroundColor = [UIColor redColor];

для получения дополнительных сведений

person Abhishek Panchal    schedule 29.11.2012

Если вы хотите изменить его в пользовательском классе UITableViewCell, вы можете просто использовать:

override func layoutSubviews() {
    super.layoutSubviews()
    self.backgroundColor = UIColor.whiteColor()
}

изменение фона внутри awakeFromNib() или init?(coder aDecoder: NSCoder) не работает!

person Trzy Gracje    schedule 10.04.2016