Как я могу добавить UIView выше видимой области UITableView? - PullRequest
8 голосов
/ 01 марта 2011

Я понимаю, что есть свойство tableHeaderView, но когда я добавляю к нему свое представление, оно не скрывается над областью прокрутки.

Я бы хотел, чтобы мой пользовательский вид отображался, когда вы опускаете и удерживаете вид таблицы, и видите мой UIView, отображаемый на экране. Это делается во многих приложениях для размещения логотипа или чего-то слегка скрытого до тех пор, пока пользователь не потянет вниз табличное представление (Twitter / Facebook при выпадающем меню).

В настоящее время я использую следующее, и оно не выходит из поля зрения:

    UILabel *l = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 300, 20)];
    l.text = @"Hidden Text";
    l.textColor = [UIColor redColor];
    self.tableView.tableHeaderView = l;
    [l release];

Ответы [ 4 ]

13 голосов
/ 01 марта 2011

Поскольку UITableView на самом деле является UIScrollView с некоторыми дополнительными функциями, вы можете использовать contentInset для получения желаемого эффекта. Хитрость заключается в том, чтобы использовать отрицательное значение для верхней вставки. Обычно это скрывает ваше представление заголовка, но оно все равно будет доступно для просмотра, когда таблица подпрыгивает.

Итак, после добавления метки в представление заголовка просто установите contentInset следующим образом:


    UILabel *l = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 300, 20)];
    l.text = @"Hidden Text";
    l.textColor = [UIColor redColor];
    self.tableView.tableHeaderView = l;

    //add this
    [self.tableView setContentInset:UIEdgeInsetsMake(-l.bounds.size.height, 0.0f, 0.0f, 0.0f)];

    [l release];
1 голос
/ 01 марта 2011

Лучшее решение здесь - это добавить свой вид в заголовок, как вы уже упоминали, что вы пытались, и затем в viewDidLoad вашего контроллера фактически прокручивать вид таблицы вниз программно, пока вид заголовка, который вы хотели скрыть, не будет скрыт.Это можно сделать разными способами.Самым простым, вероятно, является:

[self.tableView setContentOffset: CGPointMake(0, myHeaderHeight)];
0 голосов
/ 25 декабря 2013
UIWindow* window = [[UIApplication sharedApplication].delegate.window;
[window addSubview: your-overlayview];
0 голосов
/ 26 октября 2012

Просто имейте представление заголовка с 0 высотой, а затем подпредставление, которое будет расположено с отрицательным y, так, чтобы нижний край подпредставления был вершиной представления.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...