Как я могу закрепить подпредставления UIScrollView, такие как строка URL в мобильном сафари? - PullRequest
0 голосов
/ 03 декабря 2009

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

Я, однако, хочу, чтобы произошло обратное; Я хочу, чтобы определенные подпредставления прокручивались за пределы экрана, если я прокручиваю вниз, но если я прокручиваю до верха, я хочу, чтобы подпредставления оставались закрепленными в верхней части экрана, в то время как остальная часть контента продолжает прокручиваться вниз. Я полагаю, что мог бы сделать некоторую хитрость с иерархией представлений, где подвиды меняют свое суперпредставление, когда мы прокручиваем до вершины, но мне интересно, есть ли другие более элегантные решения для этого.

Ответы [ 2 ]

1 голос
/ 27 января 2012

Очень поздно ответил на свой вопрос, но я подумал, что покажу, как мне это удалось.

Я создал подкласс UIScrollView и реализовал метод layoutSubviews, который вызывается каждый раз, когда изменяется положение прокрутки. Здесь все, что вам нужно сделать, это определить, какое представление вы хотите привязать, и сделать что-то вроде этого:

- (void) layoutSubviews {
  [super layoutSubviews];

  CGFloat x = 0.0f;
  CGFloat y = MIN(self.contentOffset.y,0.0f);

  anchorview.frame = CGRectMake(x,y,anchorview.frame.size.width,anchorview.frame.size.height);
}

Если вы хотите, чтобы привязанный вид оставался сверху, если вы прокручиваете за верх (вместо того, чтобы оставаться в той же позиции относительно вида прокрутки), то это будет сделано именно так, поскольку координата y смещения содержимого будет меньше чем ноль, когда вы прокручиваете за верхнюю часть окна.

0 голосов
/ 04 декабря 2009

Заголовки разделов UITableView уже делают это в простых таблицах, вы можете использовать это поведение.

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