Как установить фон UITableView (стиль tableview "Grouped" ) для использования изображения?

Как установить фон UITableView (стиль tableview "Grouped" ) для использования изображения?

Ответ 1

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

tableView.backgroundColor = [UIColor clearColor];
tableView.opaque = NO;
tableView.backgroundView = nil;

Ответ 2

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

  • Подготовьте PNG-изображение. Он должен быть 320x460 (если у вас есть строка состояния, видимая в вашем приложении) или 320x480 (если вы ее спрячете).
  • Перетащите его в XCode в папку "Ресурсы" и добавьте в свой проект
  • Загрузите файл NIB, содержащий ваш UITableView в Interface Builder
  • Откройте библиотеку (Инструменты > Библиотека), перейдите на вкладку "Медиа" и перетащите изображение в "Вид", создайте новый UIImageView.
  • Используйте инспектор для перемещения и изменения размера изображения так, чтобы оно было равно X = 0, Y = 0, Ширина = 320, Высота = 480
  • Поместите UIImageView за UITableView (Layout > Send to Back)
  • Сохранить, строить и идти!

Разочаровав, вы не сможете увидеть свой фон. Фон UITableView блокирует нас от просмотра UIImageView. Необходимо внести три изменения:

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

    tableView.backgroundColor = [UIColor clearColor];

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

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

Ответ 3

[tableView setBackgroundColor:[UIColor colorWithPatternImage:[UIImage imageNamed:@"whatever.png"]]];

Ответ 4

tableView.backgroundView = nil;  достаточно. Не нужно устанавливать цвет фона как "Очистить цвет".

Ответ 5

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

Ответ 6

В UI Builder цвет фона имеет "другой" выбор. Это вызывает выбор цвета. У параметра выбора цвета есть параметр непрозрачности. Если вы установите непрозрачность COLOR на 0, это будет работать, не может говорить о производительности.

Ответ 7

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

Однако это не относится к тому, что происходит, когда пользователь забирает ячейку, и она "подсвечивается" - тогда она будет выглядеть квадратной. Вы можете обойти это, установив выделенное изображение для фонового изображения поддельного стола. Вы также захотите создать свой собственный вид аксессуаров для раскрытия (ImageView) с белой выделенной версией. Затем вы можете создать ячейку, подобную той, которую я использую (ниже). После того, как я выделил одну из этих ячеек, я установил backgroundView иксессуар в мои 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, чтобы разрешить серое выделение на каждой стороне таблицы, который обычно находится за пределами "содержимого" ячейки таблицы.

Ответ 8

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

Ответ 9

попробуйте этот

UIView *backView = [[[UIView alloc] initWithFrame:CGRectZero] autorelease];
backView.backgroundColor = [UIColor clearColor];
cell.backgroundView = backView;

Он работал у меня в сгруппированном виде таблицы.

Ответ 10

Сделать фон UITableview прозрачным.

Ответ 11

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

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

Иначе вы можете сделать это в Interface Builder с помощью этого стиля:

IB tableview with image behind

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