2011-05-25 4 views
0

J'ai besoin d'implémenter une vue de défilement qui (sur une pression de bouton) paginera vers le haut, gauche, bas ou droite selon le bouton qui a été pressé. En outre, l'utilisateur peut paginer indéfiniment dans la même direction, ce qui va charger les vues dans une sorte de carrousel. Donc j'ai 3 viewControllers .... viewController 1 est montré en premier .... L'utilisateur appuie à gauche, il montre viewController2, à gauche montre à nouveau viewController3, à gauche est de nouveau à viewController 1 etc et la même chose pour haut, bas, droite .4 scrollview directionnel avec pagination

Est-ce que quelqu'un sait un bon moyen de mettre en œuvre cela? Je suis ouvert à toutes les suggestions.

Un grand merci

Jules

Répondre

1

Modifier - deuxième tentative d'explication claire:

Tenir compte de cette matrice.

enter image description here

  • Cette matrice 3x4 est la zone de contenu de votre point de vue de défilement. Lorsque la pagination est activée, votre vue de défilement s'arrête sur l'une de ces "cellules", par ex. 2,1. Cette partie de la vue déroulante sera visible.
  • Si vous souhaitez que chaque "cellule" soit contrôlée par son propre contrôleur de vue, pré-générez tous les contrôleurs de vue (et leurs vues), puis ajoutez toutes leurs vues en tant que sous-vues à scrollView.
  • Vous pouvez remplir cette vue de défilement avec la vue que vous souhaitez afficher à un emplacement donné. Définissez le cadre de chaque vue par rapport à l'origine du scrollview. Donc, si les cellules avaient 320 pixels de large et 480 pixels de haut, le cadre de la cellule 1,3 serait CGRectMake (1 * 320, 3 * 480, 320 480).
  • Lorsque la scrollView met fin à la décélération, vous pouvez obtenir sa propriété contentOffset, faire un peu d'arithmétique et déterminer dans quelle cellule vous vous trouvez.
  • Pour obtenir l'effet de bouclage, vous devrez faire un peu de supercherie. Vous pouvez placer une cellule supplémentaire à la fin de chaque ligne et colonne, et si vous vous trouvez dans cette cellule, définissez contentOffset dans la cellule correspondante au début de la ligne ou de la colonne.
+0

désolé, je voulais dire viewControllers. Comme dans chaque page charge un viewController avec sa propre vue. Erm .... Im pas sûr que je comprends votre concept de chaque "page" est une autre vue de défilement qui ne fait que défiler vers le haut? J'ai besoin de pouvoir défiler indéfiniment dans toutes les directions de toutes les "pages". Cela a-t-il du sens? Merci beaucoup encore. – Jules

+0

@Jules, mon message original n'était pas clair. J'en suis entré un autre, s'il vous plaît voir si cela a plus de sens. – Rayfleck

+0

merci, cela semble être une bonne approche. Je vais essayer et vous faire savoir comment je m'entends. – Jules