Установка цвета фона ячейки таблицы на iPhone

Я хочу добиться эффекта, когда одна ячейка таблицы будет иметь синий фон, следующий будет белым, следующий будет синим снова, а затем белым и так далее … не могли бы вы сообщить мне, как я могу сделай это?

Благодарю.

Добавьте этот метод в делегат табличного представления:

#pragma mark UITableViewDelegate - (void)tableView: (UITableView*)tableView willDisplayCell: (UITableViewCell*)cell forRowAtIndexPath: (NSIndexPath*)indexPath { cell.backgroundColor = indexPath.row % 2 ? [UIColor colorWithRed: 0.0 green: 0.0 blue: 1.0 alpha: 1.0] : [UIColor whiteColor]; cell.textLabel.backgroundColor = [UIColor clearColor]; cell.detailTextLabel.backgroundColor = [UIColor clearColor]; } 

Вы должны установить цвет фона содержимого содержимого ячейки

 cell.contentView.backgroundColor = [UIColor colorWithRed...] 

Это установит фон всей ячейки.

Для этого для альтернативных ячеек используйте indexPath.row и % by 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.

Метод cell.contentView.backgroundColor = [UIColor colorWithRed...] в ответе lostInTransit работает, если вы не используете встроенную метку UITableViewCell.

Я обнаружил, что если вы используете встроенную метку, например, установив cell.text , вы получите непрозрачный белый блок под меткой, и только два конца ячейки отображают нужный цвет.

Я не нашел способа редактировать встроенную метку, чтобы она была непрозрачной (вы можете получить к ней доступ через UILabel* cellLabel = [cell.contentView.subviews objectAtIndex:0] ).

Я решил проблему, добавив свой собственный UILabel . Как это:

 UILabel* cellLabel = [[[UILabel alloc] initWithFrame:cell.frame] autorelease]; cellLabel.text = @"Test with non-opaque label"; cellLabel.backgroundColor = [UIColor clearColor]; cellLabel.opaque = NO; [cell.contentView addSubview:cellLabel]; cell.contentView.backgroundColor = [UIColor darkGrayColor]; 

добавьте следующий код в cellForRowAtIndexPath

 if (indexPath.row % 2 == 0){ cell.backgroundColor =[UIColor blueColor]; } else { cell.backgroundColor =[UIColor whiteColor]; } 

я думаю, это поможет вам

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

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

// метод экономии времени:

// в ячейке для метода индекса:

 static NSString* evenIdentifier = @"even"; static NSString* oddIdentifier = @"odd"; __weak identifier; if(indexPath.row %2 ==0) { identifier = evenIdentifier; }else{ identifier = oddIdentifier; } cell = dequeue..WithIdentifier: identifier; if(cell == nil){ cell = allocOrLoadNib...; cell.backgroundColor = (indexPath.row %2 ==0 ? evenColor : oddColor); } 

// изменим содержимое ячейки, а затем вернем ее. Легкая работа.

// это код схемы. Не копируйте его напрямую.

Это сработало для меня .. В cellForRowAtIndexPath,

 cell.textLabel.backgroundColor = [UIColor clear]; cell.detailTextLabel.backgroundColor = [UIColor clearColor]; cell.contentView.backgroundColor = [UIColor grayColor]; //whichever color u want cell.backgroundColor = cell.contentView.backgroundColor; 

Для вас, как упоминалось ранее на основе значения indexPath% 2, вы можете выполнить вышеуказанную функцию.

Этот код является немного более чистым решением для случая, когда вы используете встроенную текстовую метку и не хотите, чтобы белый цвет фона текстовой метки перекрывал цвет фона. Это также устраняет проблему нарушения округлых углов сгруппированного стиля табличного представления (что происходит, когда вы используете cell.contentView.backgroundColor вместо cell.backgroundColor):

 UITableViewCell *cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease]; cell.backgroundColor = [UIColor redColor]; cell.textLabel.backgroundColor = [UIColor clearColor]; //transparent background 
  UIView *bg = [[UIView alloc] initWithFrame:cell.frame]; bg.backgroundColor = [UIColor colorWithRed:175.0/255.0 green:220.0/255.0 blue:186.0/255.0 alpha:1]; cell.backgroundView = bg; [bg release]; 

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

 - (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath { if (indexPath.row%2 == 0) { UIColor *altCellColor = [UIColor blackColor]; cell.backgroundColor = altCellColor; }} 

Это так просто, как добавление и изменение значений модуля.

Добавить backgroundView в ячейку и установить цвет фона по вашему выбору.

 let backgroundView = View() // add background view via code or via storyboard view.backgroundColor = UIColor.red // your color cell.backgroundView = backgroundView 
  • Что именно будет скрывать SSID моего маршрутизатора, и могут ли все мои устройства подключиться к нему?
  • Эффект свечения текста IPhone
  • Сетевой протокол времени для iPhone
  • Предел localstorage на iPhone?
  • Проверьте, возвращает ли NSURL 404
  • Как отобразить несколько столбцов в UITableView?
  • Проблема с использованием NSURLRequest для данных POST на сервер
  • Декодирование символов UTF8 в Objective C
  • Сохранять ориентацию массива - и сравнить
  • Можно ли отключить плавающие заголовки в UITableView с помощью UITableViewStylePlain?
  • iOS 4: распределение беспроводных приложений для собственных приложений
  • Давайте будем гением компьютера.