Подтвердить что ты не робот

Цвет фона ячейки UITableView

как установить разные цвета фона для ячеек в UITableView (в частности, цвет радуги для семи клеток)

4b9b3361

Ответ 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];

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