Не удается установить цвет фона UITableViewCell в IB - PullRequest
30 голосов
/ 10 ноября 2010

Я создал группу ячеек, которые я повторно использую в табличном представлении.Все эти ячейки просто имеют разные UILabel s внутри и некоторые UIImageView s (ничто не покрывает всю ячейку).

Установка цвета фона в IB не имеет никакого эффекта (всегда белый или прозрачный, может 'не сказать, какой из них).Но если я нажму Command-R (имитация интерфейса), ячейка будет иметь правильный цвет фона в симуляторе.

Я попытался установить его в tableView:cellForRowAtIndexPath:, но он не работает так, как мне кажется.

Это помогает:

cell.contentView.backgroundColor = [UIColor redColor];

, но это не имеет никакого эффекта (даже если я установлю cell.contentView.backgroundColor на clearColor):

cell.backgroundView.backgroundColor = [UIColor redColor];

cell.backgroundColor = [UIColor redColor];

Я установилвсе содержимое макета / шрифта / фона в IB.Любая идея, почему это не работает в этом случае?

Почему мне нужно изменить contentView backgroundColor, а не backgroundView?

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

Ответы [ 2 ]

53 голосов
/ 10 ноября 2010

Чтобы изменить цвет фона ячейки, вы должны сделать это методом willDisplayCell:forRowAtIndexPath:.Это упоминается в документации UITableViewCell в нижней части обзора.Поэтому вам нужно:

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
{
    cell.backgroundColor = [UIColor redColor];  
}

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

1 голос
/ 27 марта 2013

Существует более простое решение: когда вы создаете UITableViewCell в Интерфейсном Разработчике, просто перетащите дополнительный UIView, чтобы он охватывал весь UITableViewCell, который вы создаете в IB.Поместите ваши дополнительные элементы пользовательского интерфейса поверх этого дополнительного UIView.Вы можете установить этот дополнительный UIView на любой фон, который вам нравится.

Существует множество ответов на StackOverflow, которые предлагают вам изменить цвет фона вашего UITableViewCell, используя следующую строку кода:

cell.contentView.backgroundColor = [UIColor redColor];

Если вы добавите тень к своей ячейке, немного изменив размер кадра contentView, вы можете обнаружить, что эта линия изменит как цвет фона вашей ячейки, так и цвет вашегообласть теней также.

...