2009-06-24 4 views
5

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

ответ

6

Понадобится:

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

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

Метод переопределения сделать это:

(void)scrollViewDidEndDecelerating:(UIScrollView*)scrollView 
+0

Спасибо за быстрый ответ! :) – 2009-06-24 11:38:57

0

Я хотел бы сделать это с помощью 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; 
+0

Спасибо также! Я попробую и посмотрю, что мне нравится. – 2009-06-24 22:01:38

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