Как я могу установить фон UITableView (стиль табличного представления «Сгруппированный») для использования изображения? - PullRequest
56 голосов
/ 22 мая 2009

Как я могу установить фон UITableView (стиль табличного представления «Сгруппированный») для использования изображения?

Ответы [ 11 ]

155 голосов
/ 01 мая 2010

В более новых версиях SDK вам нужно установить tableView.backgroundView, если вы хотите, чтобы он был прозрачным, попробуйте что-то вроде этого:

tableView.backgroundColor = [UIColor clearColor];
tableView.opaque = NO;
tableView.backgroundView = nil;
18 голосов
/ 09 февраля 2010

Нам нужно что-то сделать с этим простым фоном. Мы собираемся использовать изображение PNG и отображать его за UITableView.

  1. Подготовить изображение в формате PNG. Это должно быть либо 320x460 (если в вашем приложении видна строка состояния), либо 320x480 (если вы ее скрываете).
  2. Перетащите его в XCode в папку ресурсов и добавьте в свой проект
  3. Загрузите файл NIB, содержащий ваш UITableView, в Интерфейсный Разработчик
  4. Откройте библиотеку (Инструменты> Библиотека), переключитесь на вкладку «Медиа» и перетащите изображение в представление, создайте новый UIImageView.
  5. Используйте инспектор для перемещения и изменения размера изображения, чтобы оно было в X = 0, Y = 0, Ширина = 320, Высота = 480
  6. Поместите UIImageView за UITableView (Layout> Send to Back)
  7. Сохраняй, собирай и работай!

К сожалению, вы не сможете увидеть свой фон. Фон UITableView не позволяет нам видеть UIImageView. Вам нужно внести три изменения:

  1. В инспекторе атрибутов убедитесь, что флажок "непрозрачный" в UITableView не установлен!
  2. Установите цвет фона UITableView на прозрачный:

    tableView.backgroundColor = [UIColor clearColor];

Надеюсь, это поможет и решит вашу проблему. Это сработало для меня, и мне еще предстоит найти более элегантный способ отображения фонового изображения для UITableView.

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

12 голосов
/ 22 мая 2009
[tableView setBackgroundColor:[UIColor colorWithPatternImage:[UIImage imageNamed:@"whatever.png"]]];
9 голосов
/ 22 ноября 2011

tableView.backgroundView = nil; достаточно. Нет необходимости устанавливать цвет фона как Clear Color.

2 голосов
/ 01 августа 2010

В UI Builder цвет фона имеет выбор «Другой». Это поднимает палитру цветов. Палитра цветов имеет настройку непрозрачности. Если для параметра «Непрозрачность ЦВЕТА» установлено значение 0, это не сработает.

2 голосов
/ 22 мая 2009

Один из способов сделать прозрачность табличного представления (установить непрозрачность фона представления 0%) и поместить UIImageView позади UITableView. Помните, что прозрачные таблицы и ячейки таблиц не будут работать так же хорошо, как непрозрачные.

1 голос
/ 16 августа 2011

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

1 голос
/ 09 ноября 2009

Я обнаружил, что вам нужно использовать «простую» таблицу в стиле с прозрачным фоном, а затем воссоздать вид ячеек с закругленными углами, установив backgroundView каждой ячейки в UIImageView с изображением, которое имитирует закругленную смотреть. Это означает, что верхняя, нижняя и средняя ячейки нуждаются в разных фоновых изображениях.

Однако это не относится к тому, что происходит, когда пользователь касается ячейки, и она становится «выделенной» - тогда она будет выглядеть в квадрате. Вы можете обойти это, установив выделенное изображение для вашего фонового изображения фальшивой ячейки. Вы также захотите создать свой собственный вид аксессуара для раскрытия информации (ImageView) с выделенной белым цветом версией. Затем вы можете создать ячейку, подобную той, которую я использую (ниже). После того, как я выделил одну из этих ячеек, я установил backgroundView и accessoryView для моих UIImageViews.

#import "ClearBackRoundedTableCell.h"


@implementation ClearBackRoundedTableCell

- (id)initWithReuseIdentifier:(NSString *)reuseIdentifier 
{
    if (self = [super initWithStyle:UITableViewCellStyleDefault reuseIdentifier:reuseIdentifier]) {
    }
    return self;
}


-  (void)setHighlighted:(BOOL)highlighted animated:(BOOL)animated
{
    if( [[self.accessoryView class] isSubclassOfClass:[UIImageView class]] )
        ((UIImageView *)self.accessoryView).highlighted = highlighted;

    if( [[self.backgroundView class] isSubclassOfClass:[UIImageView class]] )
        ((UIImageView *)self.backgroundView).highlighted = highlighted;

    self.textLabel.highlighted = highlighted;
}

@end

Одно примечание, если вы идете по этому пути: ячейки в сгруппированной таблице обычно имеют ширину 300 пикселей (в портретном режиме), но ваша простая таблица здесь должна иметь ширину 302, чтобы серая линия на каждой стороне таблицы , который обычно находится за пределами «содержимого» ячейки таблицы.

0 голосов
/ 07 августа 2013

Программно вы можете сделать это следующим образом, если ваше изображение добавлено в ваши ресурсы:

self.tableView.backgroundColor = [UIColor clearColor];
self.tableView.opaque = NO;
UIImage *backroundImage = [UIImage imageNamed:@"my_backround"];
UIImageView *backroundImageView = [[UIImageView alloc] initWithImage:backroundImage];

Иначе вы можете сделать это в Интерфейсном Разработчике с этим стилем:

IB tableview with image behind

Вам может потребоваться настроить интерфейс файлов заголовков из UITableViewController в UIViewController и добавить <UITableViewDataSource,UITableViewDelegate>, также не забудьте установить атрибуты табличного представления не непрозрачными и повторно подключить источник данных tableviews и делегировать выходы контроллеру view.

0 голосов
/ 12 июля 2013

Сделать фон UITableview чистым цветом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...