Я хотел бы настроить фон (и, возможно, границу) всех UITableViewCells в моем UITableView. До сих пор я не смог настроить этот материал, поэтому у меня есть куча белых фоновых ячеек, которые по умолчанию.
Есть ли способ сделать это с помощью iPhone SDK?
UITableViewCellAccessoryCheckmark
Например, есть ли какие-нибудь ссылки о том, как сделать что-то свое ? Спасибо.cell.textLabel.backgroundColor = [UIColor clearColor];
Вот наиболее эффективный способ решения этой проблемы - использовать метод делегата willDisplayCell (он также учитывает белый цвет фона текстовой метки при использовании cell.textLabel.text и / или cell.detailTextLabel.text. ):
Когда вызывается этот метод делегата, цвет ячейки контролируется через ячейку, а не через табличное представление, как при использовании:
Таким образом, в теле метода делегата ячейки добавьте следующий код для чередования цветов ячеек или просто используйте вызов функции, чтобы сделать все ячейки таблицы одним и тем же цветом.
Это решение хорошо сработало в моих обстоятельствах ...
источник
cell.backgroundColor = UIColor.clearColor
Это действительно просто, поскольку OS 3.0 просто устанавливает цвет фона ячейки в методе willDisplayCell. Вы не должны устанавливать цвет в cellForRowAtIndexPath.
Это работает как для простого, так и для группового стиля:
Код:
PS: Вот выдержка из документации для willDisplayCell:
Я нашел эту информацию в этом посте от Colionel . Спасибо ему!
источник
Наилучший подход, который я нашел до сих пор, - это установить фоновое представление ячейки и очистить фон подпредставлений ячейки. Конечно, это хорошо смотрится на столах только с индексированным стилем, независимо от того, с аксессуарами или без.
Вот пример, где фон ячейки прокрашен желтым цветом:
источник
Просто поместите это в свой файл класса делегата UITableView (.m):
источник
Я согласен с Seba, я пытался установить свой чередующийся цвет строки в методе делегата rowForIndexPath, но получал противоречивые результаты между 3.2 и 4.2. Следующее отлично сработало для меня.
источник
После опробования всех различных решений, следующий метод является наиболее элегантным. Измените цвет в следующем методе делегата:
источник
У vlado.grigorov есть несколько полезных советов - лучший способ - создать backgroundView и присвоить ему цвет, установив все остальное в clearColor. Кроме того, я думаю, что это единственный способ правильно очистить цвет (попробуйте его образец - но установите «clearColor» вместо «yellowColor»), что я и пытался сделать.
источник
Настройка фона ячейки табличного представления в конечном итоге становится подходом «все или ничего». Очень трудно изменить цвет или изображение, используемые для фона ячейки содержимого, таким образом, что это не выглядит странным.
Причина в том, что ячейка фактически охватывает ширину вида. Закругленные углы являются лишь частью стиля рисования, и в этой области находится представление содержимого.
Если вы измените цвет ячейки с содержимым, вы получите белые углы, видимые по углам. Если вы измените цвет всей ячейки, у вас будет блок цвета, охватывающий ширину вида.
Вы можете определенно настроить ячейку, но это не так просто, как вы думаете на первый взгляд.
источник
Создайте представление и установите это как фоновое представление ячейки
источник
Чтобы расширить ответ Н. Берендта - Если вы хотите установить цвет ячейки на основе какого-либо состояния в фактическом объекте данных ячейки, в то время как вы настраиваете остальную информацию для ячейки таблицы, которая обычно происходит, когда вы находитесь в Метод cellForRowAtIndexPath, вы можете сделать это, переопределив метод willDisplayCell, чтобы установить цвет фона ячейки из цвета фона представления содержимого - это решает проблему неправильности фона кнопок раскрытия и т. д., но все же позволяет контролировать цвет в методе cellForRowAtIndexPath где вы делаете все ваши другие настройки клетки.
Итак: если вы добавите этот метод в свой делегат табличного представления:
Затем в вашем методе cellForRowAtIndexPath вы можете сделать:
Это избавляет от необходимости извлекать ваши объекты данных снова в методе willDisplayCell, а также экономит наличие двух мест, где вы выполняете настройку / настройку ячейки таблицы - все настройки можно выполнить в методе cellForRowAtIndexPath.
источник
Создайте изображение для использования в качестве фона в Photoshop или GIMP и назовите его myimage. Затем добавьте этот метод в ваш класс tableViewController:
Это также будет работать, если вы установили UITableView в custom в инспекторе атрибутов.
источник
Мое решение состоит в том, чтобы добавить следующий код в событие cellForRowAtIndexPath:
Работает при любых обстоятельствах, даже с кнопками раскрытия, и вашей логике лучше воздействовать на состояние цвета ячеек в cellForRowAtIndexPath, чем в событии cellWillShow, я думаю.
источник
Подкласс UITableViewCell и добавьте это в реализацию:
источник
источник
Это будет работать в последнем Xcode.
источник
Попробуй это:
источник