Добавить UIView за UITableView в UITableViewController
Я хотел бы использовать фиксированное изображение в качестве фона в простом сгруппированном представлении таблицы в моей программе iPhone. К сожалению, независимо от того, что я делаю, фон всегда сплошной белый. Я следил за несколькими предполагаемыми решениями на этом сайте, а другие - безрезультатно. Вот код-relavant в методе viewDidLoad класса контроллера табличного представления (обратите внимание: этот код для простоты использует сплошной синий цвет, а не изображение):
self.tableView.opaque = NO;
self.tableView.backgroundColor = [UIColor clearColor];
UIView *backgroundView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 480)];
backgroundView.backgroundColor = [UIColor blueColor];
[self.tableView.window addSubview:backgroundView];
[backgroundView release];
Я подозреваю, что не позиционирую представление backgroundView в нужном месте. Я пробовал sendToBack:, bringToFront:, и другие, но я всегда получаю белый фон. Возможно ли это сделать из UITableViewController? Должен ли я использовать Interface Builder?
Ответы
Ответ 1
Используйте свойство UITableView
subviews
для добавления фона:
[self.tableView addSubview:backgroundView];
[self.tableView sendSubviewToBack:backgroundView];
Кроме того, ваша ячейка/заголовок и т.д., вероятно, нужно будет настроить на прозрачность, чтобы ваш фоновый вид был видимым.
Ответ 2
Как и в iOS 3.2, UITableView
имеет свойство, называемое backgroundView
. Поэтому вместо добавления каких-либо подзонов просто выполните следующее:
self.tableView.backgroundView = backgroundView;
В представлении таблицы позаботится изменить размер фонового представления на размер таблицы. Фоновый вид не будет перемещаться с ячейками таблицы. Другими словами, если фоновое представление представляет собой изображение, изображение будет оставаться заблокированным на экране, при этом ячейки будут скользить по нему. Представление таблицы по умолчанию также, похоже, имеет умственные способности, чтобы автоматически выделить соответствующие элементы ячейки, если есть фоновое представление.
Ответ 3
Я бы просто установил свойство backgroundColor
самого UITableView. Вы можете использовать метод UIColor +colorWithPatternImage:
для преобразования UIImage в UIColor (который будет повторяться по всему виду, если не достаточно большой):
// From within UITableViewController -viewDidLoad:
UIImage *image = [UIImage imageNamed:"yourImage.png"];
self.tableView.backgroundColor = [UIColor colorWithPatternImage:image];
Просто добавьте yourImage.png
и [email protected]
в свой пакет приложений, соответствующим образом настройте его, и все будет установлено.