Я работаю над приложением, в котором много UITableView, и пытаюсь придать им текстурированный цвет фона. Мне нужно использовать стиль группировки, потому что я не хочу, чтобы заголовки разделов плавали над текстовыми полями при прокрутке пользователя.
Проблема, с которой я сталкиваюсь, заключается в том, что при использовании стиля «Группировка» фоновая текстура не прокручивается вместе с таблицей; она остается на месте, пока таблица прокручивается над ней. Я чувствую, что это немного странно, и я предпочел бы иметь фоновую прокрутку с таблицей, как это происходит в обычном стиле. К сожалению, из-за того, что я не могу иметь представления заголовков, плавающие поверх всего, это не представляется возможным.
Кто-нибудь смог это сделать?
Вот соответствующий код:
- (void)loadView {
[super loadView];
self.view.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
self.tableView.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"texturedPattern.png"]];
// this prevents the cells from replicating the background texture
self.tableView.backgroundView = [[UIView alloc] initWithFrame:self.view.bounds];
self.tableView.separatorStyle = UITableViewCellSeparatorStyleNone;
}
- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath {
// disable the default grouped border since we're doing it manually with the textField
cell.backgroundView = nil;
cell.backgroundColor = [UIColor clearColor];
}
И мой табличный вид в настоящее время выглядит так:
UPDATE
Как предположил Амит Вьявахаре, я попытался применить фоновую текстуру к фону заголовков и каждой ячейке. Есть две проблемы, которые гораздо более очевидны, когда вы видите их в движении, но я сделаю все возможное.
- Во-первых, фон всегда виден. Я убрал цвет фона из таблицы, чтобы сделать его более очевидным :
Везде, где вы видите черный цвет, будет видна фоновая текстура tableView, и она не будет прокручиваться вместе с tableView . Стиль сгруппированного табличного представления вставляет 5-пиксельную границу с каждой стороны каждой ячейки и не может быть изменен. Кроме того, под разделом «Идентификатор персонала» нет нижнего колонтитула, и я даже добавил -tableView:heightForFooterInSection:
, чтобы вернуть 0.0, но там все еще есть пробел.
- Во-вторых, даже если бы мне удалось избавиться от этих пробелов, текстуры все равно не совпадают. Опять же, это трудно увидеть, поэтому я загрузил снимок экрана сетчатки, чтобы сделать его немного проще:
Это наиболее очевидно выше раздела «Пароль», вы можете видеть, что текстуры не выровнены должным образом, и это выглядит как «сгиб» на бумаге. Что было бы здорово, я думаю, если это то, что хотел клиент. Это видно, но менее очевидно почти на каждом краю со второго снимка экрана. Это связано с тем, что текстура на самом деле довольно большая: 200x200 (400x400 @ 2x), и есть небольшие вариации цвета, которые не заметны , если не произойдет такого смещения.