SDK для iPhone:Как добавить подпредставление изображения в UITableViewController и при этом видеть ячейки?
-
20-09-2019 - |
Вопрос
Я добавляю подпредставление изображения в UITableViewController с сгруппированной таблицей.После добавления подпредставления изображения я вижу заголовки таблиц поверх изображения, но ячейки рисуются позади изображения.
Нужно ли что-то еще сделать, чтобы ячейки таблицы отображались поверх фонового изображения?Вот код, который я использую в viewDidLoad UITableViewControlle:
CGRect myImageRect = CGRectMake(0.0f, 0.0f, 320.0f, 959.0f);
UIImageView *backImageView = [[UIImageView alloc] initWithFrame:myImageRect];
[backImageView setImage:[UIImage imageNamed:@"somebackground.png"]];
[self.view addSubview:backImageView];
[self.view sendSubviewToBack:backImageView];
[backImageView release];
Я понимаю, что в качестве альтернативы я мог бы просто создать составное представление и поместить поверх него табличное представление, а не то, что я пытаюсь сделать здесь.Если другого решения не будет, я так и сделаю, но предпочел бы использовать подход, который пытаюсь использовать, если это вообще возможно.
Решение 2
Похоже, что UITableView часто меняет порядок представлений при обновлении.Таким образом, вам необходимо вручную управлять сбросом zorder для любых событий таблицы, таких как вставка/удаление/обновление строк.
Другие советы
Это сгруппированное табличное представление.Из документов Apple:
The grouped style of table view provides a default background color and a default background view for all cells.
Это означает, что за вашей таблицей вставляется изображение по умолчанию.Вы хотите заменить это своим собственным представлением, например:
CGRect myImageRect = CGRectMake(0.0f, 0.0f, 320.0f, 959.0f);
UIImageView *backImageView = [[UIImageView alloc] initWithFrame:myImageRect];
[backImageView setImage:[UIImage imageNamed:@"somebackground.png"]];
self.tableView.backgroundView = backImageView;
Это заменяет другой фоновый вид на ваш собственный.В противном случае, когда представление таблицы будет выложено снова, другое фоновое изображение наложится на ваше.