43 votes

L'équivalent du ViewPager d'Android sur iOS ? Balayer/défiler les pages de données

Sur Android, il existe un moyen ingénieux de naviguer entre plusieurs pages de données avec la même mise en page en utilisant ViewPager et Fragments. L'utilisateur glisse à gauche ou à droite, et les pages changent. Il n'y a qu'un seul contrôleur de vue et une seule ressource de mise en page pour toutes les pages, mais le contenu des données change lorsque l'utilisateur navigue. Il y a également un effet d'animation pour le glissement vers la gauche et la droite où vous pouvez voir que le contenu de la page suivante est déjà chargé.

Quel est l'équivalent de ceci sur iOS ?

47voto

Kristopher Johnson Points 34554

Utilisez un UIScrollView avec le pagingEnabled est réglé sur OUI. En général, un UIPageControl est utilisé en même temps que lui.

Si vous cherchez "UIScrollView paging" sur Google, vous trouverez de nombreux tutoriels et exemples. Apple fournit un PageControl programme type.

iOS ne fournit aucune classe de type adaptateur, mais voici un tutoriel qui explique comment mettre en œuvre des "pages virtuelles" afin de ne pas avoir à instancier toutes les pages en même temps : http://cocoawithlove.com/2009/01/multiple-virtual-pages-in-uiscrollview.html

26voto

Ingolmo Points 565

Vous devriez regarder UIPageViewController . Il est disponible depuis iOS 5.

7voto

Shabib Points 1602

J'ai créé un contrôle personnalisé pour iOS qui agit de manière similaire au viewPager d'Android. Vous pouvez le consulter aquí .

0voto

hyunwoo Points 11

Visitez https://github.com/vowed21/HWViewPager

Cela peut vous aider.

Héritage de UICollectionView.

Cellule réutilisable, (probablement l'adaptateur d'Android)

ET activer l'aperçu de la partie gauche et droite.

0voto

DragonCherry Points 11

Vous pouvez le mettre en œuvre vous-même en utilisant l'idée suivante.

Supposons que nous souhaitions boucler à l'infini sur 3 éléments (cellules) - C0, C1, C2, nous pouvons générer des cellules fictives à gauche et à droite des cellules centrales, le résultat étant le suivant,

C0 C1 C2 [C0 C1 C2] C0 C1 C2

Les cellules entre parenthèses sont les cellules que nous voyons à travers l'écran de l'appareil, et si nous faisons défiler vers la gauche,

C0 [C1 C2 C0] C1 C2 C0 C1 C2

à ce moment, forcez contentOffset à pointer vers le côté droit des cellules fictives données,

C0 [C1 C2 C0] C1 C2 C0 C1 C2 -> C0 C1 C2 C0 [C1 C2 C0] C1 C2

Il fonctionnera de la même manière lorsque vous le ferez défiler vers la droite.

Dans ma solution ci-dessous, le fait de définir la largeur de la vue de l'élément comme étant égale à celle de sa vue parent résoudra votre problème.

https://github.com/DragonCherry/HFSwipeView

Si vous voulez simplement vérifier comment cela fonctionne, cliquez sur le lien ci-dessous et "tapez pour jouer".

https://www.cocoacontrols.com/controls/hfswipeview

L'utilisation de l'option pagingEnabled dans UIScrollView peut fonctionner dans le cas d'un élément de cellule de taille normale, mais elle ne fonctionnera pas correctement si vous souhaitez définir une largeur plus étroite de l'élément de contenu que sa vue parent (défilement). Veuillez vérifier cette fonctionnalité en vous référant à l'exemple de cocoacontrols pour "Sync" ou "Edge Preview".

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X