Как создать горизонтальную прокрутку для iPhone? - PullRequest
5 голосов
/ 24 июня 2009

Safari делает это с веб-страницами с вкладками. AppStore (3.0) делает это с изображениями предварительного просмотра приложения. Представления прокручиваются по горизонтали и фиксируются по центру каждого вида. Есть идеи, как этого добиться?

Ответы [ 2 ]

6 голосов
/ 24 июня 2009

Вам нужно:

  1. ScrollView с включенной подкачкой, три экрана в ширину.
  2. Чтобы иметь три подпредставления в виде прокрутки - L (левый контент, в 0,0), C (центральный контент, в 320,0), R (правый контент, в 640,0). C - это контент, который вы хотите изначально показать. L - это содержимое, которое отображается, если пользователь прокручивает влево.
  3. Установите смещение содержимого прокрутки на 320 (для портретного режима), потому что вы хотите, чтобы C отображалось изначально, а не L.
  4. Каждый раз, когда заканчивается прокрутка, смещение содержимого будет целым числом экранов. Если вы по-прежнему отображаете C (contentoffset равно 320), то все в порядке. Если смещение содержимого теперь равно 0 или 640, у вас есть немного работы.

Если пользователь прокручивает влево - у вас та же иерархия представления, но теперь представление прокрутки показывает L, а не C, потому что contentoffset равен 0, а scrolloffset равен 0. Теперь вы должны сбросить весь контент, чтобы у вас был XLC и scrolloffset 320 - в случае, если пользователь хочет снова прокрутить влево. Другими словами, C становится новым R, L становится новым C, а X является новым контентом, который отображается, если пользователь снова прокручивает влево.

Метод, который нужно переопределить для этого:

(void)scrollViewDidEndDecelerating:(UIScrollView*)scrollView
0 голосов
/ 24 июня 2009

Я бы сделал это, используя CATransition, с типом kCATransitionPush.

CATransition *animation = [CATransition animation];
[animation setType:kCATransitionPush];
[animation setSubtype:kCATransitionFromRight]; //or ...FromLeft, as the case may be

Я получил лучшую производительность с CATransitions, чем с другими методами, но это может зависеть от нескольких факторов.

Посмотрите на класс TransitionView в примере кода Apple, чтобы узнать, как создать представление, которое выполняет переходы. С этим классом вы можете сделать:

- (void)replaceSubview:(UIView *)oldView withSubview:(UIView *)newView transition:(NSString *)transition direction:(NSString *)direction duration:(NSTimeInterval)duration;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...