UITableView с полупрозрачными заголовками секций и разноцветными фонами секций - PullRequest
5 голосов
/ 22 мая 2011

Я пытаюсь настроить UITableView с элементами, подобными этим:

diagram

В частности, таблица имеет несколько разделов, и каждый раздел имеет свой цвет фона. Для этого я обычно просто изменяю каждую ячейку. Сложность в том, что я бы хотел, чтобы заголовки секций были полупрозрачными. Когда я делаю это, фон под заголовком является цветом фона табличного представления, когда под заголовком нет ячейки. Конечно, я мог бы установить цвет фона табличного представления, но тогда цвет под каждым заголовком был бы одинаковым.

Как бы я создал табличное представление, подобное изображенному на диаграмме?

ОБНОВЛЕНИЕ: Чтобы сделать это абсолютно ясным, я знаю, как сделать пользовательский вид заголовка, и знаю, как сделать его прозрачным, используя свойство alpha. Проблема в том, что под видом. Мне нужен цвет фона раздела, а не цвет фона табличного представления.

Ответы [ 2 ]

1 голос
/ 22 мая 2011

Точного решения для этого не существует, но мы можем использовать свойство backgroundView. Установите его в режим прокрутки. Это представление прокрутки будет содержать фоновые представления для раздела. Определите себя в качестве наблюдателя для табличных представлений contentSize и contentOffset и измените значения представления прокрутки параллельно представлениям таблицы. Получите рамки кадров для ваших фоновых представлений, используя метод rectForSection:, и создайте подпредставления для представления с прокруткой с соответствующим набором цветов фона. Это должно работать до такой степени.

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

1 голос
/ 22 мая 2011

Используйте UIImageView в заголовке и используйте (пользовательское) изображение.

- (UIView *) tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section           {

      UIView * junkView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"headerImageBackground.png"]];
      junkView.alpha = .3;
      [junkView autorelease];
      return junkView;
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...