web-dev-qa-db-fra.com

Équivalent au ViewPager d'Android sur iOS? Glissez / feuilletez les pages de données

Sur Android, il existe un moyen pratique de parcourir plusieurs pages de données avec la même mise en page en utilisant ViewPager et Fragments. L'utilisateur glisse vers la gauche ou la droite, et les pages changent. Il n'y a qu'un contrôleur de vue et une mise en page ressource pour toutes les pages, mais le contenu des données change lorsque l'utilisateur navigue. Il y a aussi un effet d'animation dans le balayage 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 cela sur iOS?

37
Vanja

Utilisez un UIScrollView avec la propriété pagingEnabled définie sur YES. En général, un UIPageControl est utilisé avec lui.

Si vous utilisez Google pour la "pagination UIScrollView", vous pouvez trouver de nombreux didacticiels et exemples. Apple fournit un exemple de programme PageControl .

iOS ne fournit aucune sorte de classe de type adaptateur, mais voici un tutoriel qui explique comment implémenter des "pages virtuelles" afin que vous n'ayez pas à instancier toutes les pages à la fois: http: // cocoawithlove.com/2009/01/multiple-virtual-pages-in-uiscrollview.html

42

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

24
Ingolmo

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

6
Shabib

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

Cela peut vous aider.

UICollectionView héritée.

Cellule réutilisable (probablement l'adaptateur Android)

ET activez la partie Aperçu du côté gauche et droit.

0
hyunwoo

Vous pouvez l'implémenter vous-même en utilisant l'idée suivante.

Supposons que nous souhaitons parcourir en boucle à travers 3 éléments (cellules) - C0, C1, C2, nous pouvons générer des cellules fictives à gauche et à droite des cellules centrales, le résultat est le suivant,

C0 C1 C2 [C0 C1 C2] C0 C1 C2

Les cellules entre parenthèses sont des 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 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 dans le même mécanisme lorsque vous le faites défiler vers la droite.

Dans ma solution ci-dessous, définir la largeur de la vue de l'élément à 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 "appuyez 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 cela 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".

0
DragonCherry