Необходимо установить backgroundColor contentView ячейки к цвету. Если Вы будете использовать аксессуары (такие как стрелки раскрытия, и т.д.), они обнаружатся как белые, таким образом, Вы, возможно, должны будете прокрутить пользовательские версии тех.
vlado.grigorov имеет некоторый хороший совет - лучший способ состоит в том, чтобы создать backgroundView и дать этому цвет, установив все остальное на clearColor. Кроме того, я думаю, что путем является единственный способ правильно очиститься, цвет (попробуйте его образец - но установите 'clearColor' вместо 'yellowColor'), который является тем, что я пытался сделать.
Лучший подход, который я нашел до сих пор, должен установить фоновое представление ячейки и ясный фон подпредставлений ячейки. Конечно, это выглядит хорошим на таблицах с индексируемым стилем только, неважно, с или без аксессуаров.
Вот образец, где образование ячейки задыхается желтое:
UIView* backgroundView = [ [ [ UIView alloc ] initWithFrame:CGRectZero ] autorelease ];
backgroundView.backgroundColor = [ UIColor yellowColor ];
cell.backgroundView = backgroundView;
for ( UIView* view in cell.contentView.subviews )
{
view.backgroundColor = [ UIColor clearColor ];
}
Настройка фона ячейки табличного представления в конечном счете становится, и "все или ничего" приблизьтесь. Очень трудно изменить цвет или изображение, используемое для фона ячейки содержания способом, которая не выглядит странной.
причина состоит в том, что ячейка на самом деле охватывает ширину представления. Скругленные углы являются просто частью его стиля рисунка и довольного, представление находится в этой области.
при изменении цвета ячейки содержания Вы закончите с белыми битами, видимыми в углах. При изменении цвета всей ячейки у Вас будет блок цвета, охватывающего ширину представления.
можно определенно настроить ячейку, но это не совсем столь легко, как можно думать сначала.
Вот наиболее эффективный способ, с которым я столкнулся для решения этой проблемы, - использовать метод делегата willDisplayCell (он также заботится о белом цвете фона текстовой метки при использовании cell.textLabel. .text и / или cell.detailTextLabel.text):
- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath { ... }
Когда этот метод делегата вызывается, цвет ячейки контролируется через ячейку, а не через представление таблицы, как при использовании:
- (UITableViewCell *) tableView: (UITableView *) tableView cellForRowAtIndexPath: (NSIndexPath *) indexPath { ... }
Итак, в теле метод делегата ячейки добавляет следующий код для изменения цвета ячеек или просто используйте вызов функции, чтобы сделать все ячейки таблицы одного цвета.
if (indexPath.row % 2)
{
[cell setBackgroundColor:[UIColor colorWithRed:.8 green:.8 blue:1 alpha:1]];
}
else [cell setBackgroundColor:[UIColor clearColor]];
Это решение хорошо сработало в моих обстоятельствах ...
Просто поместите это в файл класса делегата UITableView (.m):
- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
{
UIColor *color = ((indexPath.row % 2) == 0) ? [UIColor colorWithRed:255.0/255 green:255.0/255 blue:145.0/255 alpha:1] : [UIColor clearColor];
cell.backgroundColor = color;
}
Это действительно просто, поскольку OS 3.0 просто установила цвет фона ячейки в методе willDisplayCell. Вы не должны устанавливать цвет в cellForRowAtIndexPath.
Это работает как для простого, так и для группового стиля:
Код:
- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath {
cell.backgroundColor = [UIColor redColor];
}
PS: Здесь отрывок из документации для willDisplayCell:
«Табличное представление отправляет это сообщение своему делегату непосредственно перед он использует ячейку для рисования строки, тем самым позволяя делегату настраивать объект ячейки перед его отображением. Этот метод дает делегату возможность переопределяют свойства на основе состояния, установленные ранее табличным представлением, такие как выбор и цвет фона. После возвращения делегата табличное представление }} устанавливает только свойства альфа и кадра , и то только при анимации строк, когда они выдвигаются или выходят ".
Я нашел эту информацию в это сообщение от colionel . Поблагодарить его!