Как установить фоновое изображение для сгруппированного представления таблицы?

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

Как это достигается?

Ответ 1

В другом проекте (разработанном с использованием 2.2.1) я сделал это, установив мою непрозрачность фона UITableView' на 0%, а затем просто разместив UIImageView за ней с помощью Interface Builder. Это позволило мне иметь фиксированный фон независимо от состояния таблицы. Вы также можете установить фон UITableView вместо изображения, но затем фон прокручивается вместе с таблицей. (На данный момент у меня нет кода, но я получил подсказку некоторое время на форумах разработчиков Apple).

Обратите внимание, что это может вызвать некоторые проблемы с производительностью. Apple не рекомендует использовать прозрачность, когда это возможно, потому что графические процессоры на моделях до 3GS не особенно плотны.

Ответ 2

Вот что сработало для меня (и довольно просто, как только я понял это;)

1) Добавьте представление в свой делегат приложения и сделайте его подвид окна:

UIView *bgView = [[UIView alloc]initWithFrame:window.frame];

 bgView.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"screenBG.png"]];
 [window addSubview:bgView];
 [bgView release];

2). В каждом файле диспетчера .m в представлении ViewDidLoad задайте цвет фона этого конкретного вида прозрачным (так будет отображаться другой созданный выше bgView):

self.view.backgroundColor = [UIColor clearColor];

И в моем случае контроллер представления на шаге 2 был контроллером tableview. Выглядит отлично.

И BTW, делая следующее в каждом представлении, контроллер НЕ работал хорошо:

self.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"screenBG.png"]];

Итак, выполните шаги 1 и 2 выше.

Надеюсь, что это поможет, TBone

Ответ 3

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

- (void) viewDidLoad {
    [super viewDidLoad];

    self.tableView.backgroundColor = [UIColor clearColor];
    self.view.backgroundColor = [UIColor colorWithPatternImage: [UIImage imageNamed:@"wallpaper.png"]];
    self.tableView.opaque = NO;
}

Ответ 4

Вы можете использовать метод +[UIColor colorWithPatternImage:(UIImage)] следующим образом:

self.tableView.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"Background.png"]];

Ответ 5

проблема с colorWithPatternImage: это то, что вам нужно использовать "узорные" изображения, иначе ваше изображение будет разбито случайным образом

У этой ссылки есть простое решение, если вы хотите, чтобы все ваши представления имели один и тот же фон

http://howtomakeiphoneapps.com/2009/03/how-to-add-a-nice-background-image-to-your-grouped-table-view/

Ответ 6

self.parentViewController.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"SortByCategory_320x480.png"]];

self.tableView.separatorColor = [UIColor clearColor];

self.tableView.backgroundColor = [UIColor clearColor];

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