Я не мог получить принятый ответ на работу; не то, чтобы я думал, что ответ неправильный (отнюдь нет - похоже, это правильный путь), но когда я писал свое первое приложение для iOS, моя голова уже кружилась с подклассами. Поэтому я решил обмануть.
Допустим, пользовательская ячейка контролировалась классом TableViewCell
. Я создал файл пикселя .png
правильного цвета фона и создал объект UIImageView
в своей пользовательской ячейке. Я использовал инспектор Атрибутов, чтобы установить изображение по умолчанию и использовал «Масштабировать до заливки». Для большей визуальной привлекательности я добавил следующее в пользовательские атрибуты среды выполнения в инспекторе удостоверений:
KeyPath Type Value
layer.cornerRadius Number 4
layer.masksToBounds Boolean YES
Вуаля, закругленные углы по дешевке.
Расположенный непосредственно за UILabel, он выглядит как бизнес, хотя, очевидно, он не будет изменять размер контента (поскольку единственным контентом является его собственное изображение). Для меня это не проблема, так как отображаемые данные в любом случае должны быть фиксированного размера.
Для некоторых значений было хорошо иметь другой цвет, который можно установить очень просто:
cell.deviceDetailBackground.image = [UIImage imageNamed:@"detailBackground2.png"];
Где 'cell' - это воплощение моей пользовательской ячейки в методе cellForRowAtIndexPath
, созданном с использованием TableViewCell *cell;
. Нет данных для отображения?
cell.deviceDetailBackground.image = nil;
Я уверен, что будет веская причина, почему это глупая идея, но, поскольку я только начинаю с разработки для iOS, это было легкое исправление, которое сработало для меня. Не стесняйтесь сказать мне, почему бы не сделать это!