2014-01-20 2 views
0

У меня есть iphone app, где я хочу сделать следующее:Связь 2 UIScrollView с различным пейджингом размеров

  1. категории заголовок, которая является горизонтально scrolling пользовательского размером подкачки UIScrollView, где пользователь может переключаться между категориями по swiping влево или вправо.
  2. Категория содержимого страницы ниже строки заголовка, которая также является горизонтальной прокруткой UIScrollView (полный экран ширины пейджинга). Пользователь также может переключаться между страницами контента, проводя влево или вправо.

То, что я хотел бы достичь заключается в следующем:

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

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

Спасибо!

ответ

0

Я сделал это в своем приложении. представление категории похоже на представление «витрины», после салфетки или касания вызывает уведомление. контент может быть UICollectionView, поэтому он имеет метод setContentOffset:, чтобы перейти к странице «goto» dest. или вы можете использовать addChildViewController в contentView и комбинировать с pagingEnabled UIScrollView.

0

С ссылкой на Making two UIScrollViews follow each others scrolling, я использовал его, установив делегат UIScrollView для просмотра прокрутки в родительский контроллер представления и вызывая метод scrollViewDidScroll.

- (void)matchScrollView:(UIScrollView *)first toScrollView:(UIScrollView *)second { 
    CGPoint offset = first.contentOffset; 
    offset.x = (second.contentOffset.x/second.frame.size.width) * first.frame.size.width; 
    first.contentOffset = offset; 
} 

- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView { 
    if([scrollView isEqual:firstScrollView]) { 
     isSecondScrolling = NO; 
    } else if ([scrollView isEqual:secondScrollView]) { 
     isSecondScrolling = YES; 
    } 
} 

- (void)scrollViewDidScroll:(UIScrollView *)scrollView { 
    if ([scrollView isEqual:firstScrollView] && isSecondScrolling == NO) { 
     [self matchScrollView:secondScrollView toScrollView:firstScrollView]; 
    } else if ([scrollView isEqual:_midPanelScrollView] && isSecondScrolling == YES) { 
     [self matchScrollView:firstScrollView toScrollView:secondScrollView]; 
    } 
} 

Однако я добавил булево isSecondScrolling, чтобы остановить firstScrollView от инициирования matchScrollView когда secondScrollView прокручивается. В противном случае это приведет к тому, что рамка второгоScrollView будет слегка отключена после каждого прокрутки.

Смежные вопросы