Сотовый фон и аксессуар - PullRequest
14 голосов
/ 19 марта 2011

Я пытаюсь установить фон ячейки моих 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 does not change background color.

Ответы [ 3 ]

46 голосов
/ 19 марта 2011

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

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

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

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

4 голосов
/ 29 ноября 2012

В функции

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

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

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

для получения более подробной информации

0 голосов
/ 10 апреля 2016

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

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

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

...