как установить разные цвета фона для ячеек в UITableView (в частности, цвет радуги для семи клеток)
Цвет фона ячейки UITableView
Ответ 1
Задайте свойство backgroundColor
:
cell.backgroundColor = [UIColor redColor];
Обратите внимание, что backgroundColor должен быть установлен в методе tableView:willDisplayCell:forRowAtIndexPath:
(из ссылки UITableViewCell):
Примечание. Если вы хотите изменить цвет фона ячейки (путем установки цвет фона ячейки через Свойство backgroundColor, объявленное UIView), вы должны сделать это в Tableview: willDisplayCell: forRowAtIndexPath: метод делегата, а не tableView: cellForRowAtIndexPath: из источника данных. Изменения в цвета фона ячеек в групповое представление таблицы имеет эффект в iOS 3.0, который отличается от предыдущие версии система. Теперь он влияет на область внутри закругленный прямоугольник вместо вне его.
Используйте параметр indexPath для достижения эффекта радуги.
Ответ 2
Если вы хотите установить цвет ячейки на основе некоторого состояния в фактическом объекте данных ячейки, это другой подход:
Если вы добавите этот метод в делегат табличного представления:
- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath {
cell.backgroundColor = cell.contentView.backgroundColor;
}
Затем в вашем методе cellForRowAtIndexPath вы можете:
if (myCellDataObject.hasSomeStateThatMeansItShouldShowAsBlue) {
cell.contentView.backgroundColor = [UIColor blueColor];
}
Это избавляет от необходимости снова извлекать ваши объекты данных в методе willDisplayCell.
Ответ 3
Не забудьте установить цвет фона вашего стола в clearColor. В противном случае clearColor ячейки не будет отображаться, поскольку цвет фона tableView по умолчанию будет whiteColor. И даже когда цвет ячейки превратится в clearColor whiteColor будет отображаться, потому что цвет фона tableView по-прежнему whiteColor. Remenber.
Ответ 4
Вы можете установить его так:
cell.contentView.backgroundColor = [UIColor colorWithRed:249.0/255 green:237.0/255 blue:224.0/255 alpha:1.0];
Ответ 5
Довольно уверен, что UITableViewCell является подклассом UIView, поэтому:
cell.backgroundColor = [UIColor blueColor];
Для ужасных цветов радуги, вот пример:
static NSArray *colors = [NSArray arrayWithObjects:[UIColor redColor], [UIColor yellowColor], etc..., nil];
cell.backgroundColor = [colors objectAtIndex:indexPath.row];
Ответ 6
Попробуйте это
cell.backgroundVIew.backgroundColor = [UIColor orangeColor];
Ответ 7
Если вы подклассифицировали UITableViewCell
, вы можете надежно установить self.backgroundColor
в -layoutSubviews
. По крайней мере, по моему опыту, это работает в нечетных случаях, когда tableView: willDisplayCell: forRowAtIndexPath: нет.
Ответ 8
Вы можете прийти к выводу, что "willDisplayCell" по-прежнему не работает, как я сделал сначала. Причина, по которой он не работал у меня изначально, состоял в том, что я неправильно использовал цвета.
Не забывайте, что при использовании пользовательских цветов вам нужно разделить на 255.0f:
[UIColor colorWithRed:44/255.0f green:50/255.0f blue:65/255.0f alpha:1];
Что-то вроде следующего приведет к белой ячейке:
//DON'T DO
[UIColor colorWithRed:44 green:50 blue:65 alpha:1];
делает вид, что он ничего не делает, когда он действительно устанавливает фоновое изображение в белый цвет.