Как вы можете закрепить заголовок поверх UIScrollView, который прокручивается только в измерении x? - PullRequest
0 голосов
/ 27 марта 2012

У меня есть UIScrollView, который отображает некоторые графические данные и имеет ось оси вверху экрана.В настоящее время, когда вы прокручиваете вниз, ось x исчезает, потому что это просто подпредставление UIScrollView, но я хочу, чтобы он всегда был прикреплен к верхней части экрана, чтобы пользователь мог видеть значения оси x.

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

Я не уверен, как это сделать.Я подумал о нескольких подходах.

  1. Я мог бы удалить ось x из ScrollView и затем поместить ее в свой собственный UIView, а затем использовать методы делегата представления прокрутки для синхронизации оси x сscrollviews новая позиция после и во время горизонтальной прокрутки.
  2. Я мог бы каким-то образом дублировать события горизонтальной прокрутки и передавать их в представление оси x (которое в этом случае было бы другим UIScrollView).

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

Я не решаюсь попробовать номер два, потому что я не уверен, что это вообще возможно сделать.

Я ищу совет о том, как подойти к этой проблеме (желательно от кого-то, кто делал что-то подобное раньше).

Заранее спасибо!

1 Ответ

0 голосов
/ 28 марта 2012

Я верю, что ваш второй подход будет работать. Сделайте ваш контроллер представления UIScrollViewDelegate для двухстороннего просмотра с прокруткой и используйте scrollViewDidScroll: для синхронизации позиционирования путем настройки заголовка прокрутки.

- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
    CGPoint offset = [scrollView contentOffset];
    CGPoint headOffset = CGPointMake(offset.x, 0.0f);
    [self.headScroller setContentOffset:headOffset animated:NO];
}

Предполагается, что headScroller отключил взаимодействие с пользователем и не имеет делегата. Он прокручивается только под управлением программы.

...