Я хотел бы настроить как фон, так и цвет границы UITableView сгруппированного стиля.
Мне удалось настроить цвет фона, используя следующее:
tableView.contentView.backgroundColor = [UIColor greenColor];
Но я не знаю, как изменить цвет границы.
Как мне настроить эти два аспекта табличного представления сгруппированного стиля?
Ответы:
ОБНОВЛЕНИЕ: в iPhone OS 3.0 и более поздних версиях
UITableViewCell
теперь естьbackgroundColor
свойство, которое делает это очень просто (особенно в сочетании с[UIColor colorWithPatternImage:]
инициализатором). Но я оставлю здесь версию ответа 2.0 для всех, кому это нужно ...Это сложнее, чем должно быть. Вот как я это делал, когда мне приходилось это делать:
Вам необходимо установить свойство UITableViewCell backgroundView на пользовательский UIView, который рисует границу и сам фон в соответствующих цветах. Это представление должно иметь возможность рисовать границы в 4 различных режимах: закругление сверху для первой ячейки в разделе, закругление снизу для последней ячейки в разделе, без закругленных углов для ячеек в середине раздела. и закруглены по всем 4 углам для разделов, содержащих одну ячейку.
К сожалению, я не мог понять, как установить этот режим автоматически, поэтому мне пришлось установить его в методе UITableViewDataSource -cellForRowAtIndexPath.
Это настоящая PITA, но я подтвердил с инженерами Apple, что в настоящее время это единственный способ.
Обновить Вот код для этого настраиваемого представления bg. Есть ошибка рисования, из-за которой закругленные углы выглядят немного забавно, но мы перешли к другому дизайну и отказались от пользовательского фона, прежде чем я успел его исправить. Тем не менее, это, вероятно, будет вам очень полезно:
источник
Я знаю, что ответы относятся к изменению сгруппированных ячеек таблицы, но в случае, если кто-то хочет также изменить цвет фона представления таблицы:
Вам не только нужно установить:
Вам также необходимо изменить или избавиться от фонового представления:
источник
Прежде всего спасибо за этот код. Я внес некоторые изменения в эту функцию, чтобы устранить угловую проблему рисования.
источник
Спасибо за код, это именно то, что я искал. Я также добавил следующий код в код Vimal, чтобы реализовать случай ячейки CustomCellBackgroundViewPositionSingle. (Все четыре угла закруглены.)
источник
Одна вещь, с которой я столкнулся с приведенным выше кодом CustomCellBackgroundView от Майка Акерса, может быть полезен другим:
cell.backgroundView
не перерисовывается автоматически при повторном использовании ячеек, а изменения позиции var backgroundView не влияют на повторно используемые ячейки. Это означает, что длинные столы будут неправильно нарисованы сcell.backgroundViews
учетом их позиций.Чтобы исправить это без необходимости создавать новый backgroundView каждый раз, когда отображается строка, вызовите
[cell.backgroundView setNeedsDisplay]
в конце вашего-[UITableViewController tableView:cellForRowAtIndexPath:]
. Или для более многоразового решения переопределите установщик положения CustomCellBackgroundView, включив в него файл[self setNeedsDisplay]
.источник
Спасибо за этот очень полезный пост. В случае, если кто-то там (например, я!) Хочет просто иметь полностью пустой фон ячейки вместо его настройки с помощью изображений / текста / другого контента в IB и не может понять, как, черт возьми, избавиться от тупой границы / заполнения / фон, даже если вы установили его в IB на очистку ... вот код, который я использовал, что помогло!
Надеюсь, это поможет кому-то другому! Кажется, работает как шарм.
источник
cell.backgroundView
.Большое спасибо всем, кто разместил свой код. Это очень полезно.
Я получил аналогичное решение для изменения цвета выделения для сгруппированных ячеек табличного представления. В основном selectedBackgroundView UITableViewCell (а не backgroundView). Который даже на iPhone OS 3.0 все еще нуждается в этом решении PITA, насколько я могу судить ...
В приведенном ниже коде есть изменения для визуализации выделения с помощью градиента вместо одного сплошного цвета. Также убран рендеринг границы. Наслаждаться.
источник
Вы можете настроить цвет границы, установив
источник
Чтобы изменить цвет границы представления таблицы:
in.h:
В .m:
источник
Эту задачу легко выполнить с помощью PrettyKit , добавив около 5 строк кода. Если вы используете
nib
файлы илиstoryboard
, также не забудьте применить этот небольшой прием . Когда вы используете этот подход, вы должны подклассифицировать свою ячейку изPrettyTableViewCell
:Это пример моего
cellForRowAtIndexPath
:источник
У меня были проблемы с этим, и я попробовал множество комбинаций вещей, поскольку заметил, что для некоторых ячеек это работает нормально, но не для других.
Как ни странно, я обнаружил, что можно установить для cell.backgroundColor значение lightGrayColor, и все работает отлично, но blueColor вызывал у меня проблемы с не обновлением внешних краев.
Если использование зеленого цвета не является действительно важным - возможно, вы захотите попробовать это. Возможно, эта функция заставляет людей использовать только серые цвета при указании выбранной ячейки.
источник