Фон сотовый и аксессуар

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

Ответы

Ответ 1

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

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

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

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

Ответ 2

В функции

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

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

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

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

Ответ 3

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

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

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