Comment changer la position de UIPageControl dans iOS & gt; = 8.0?
J'ai un simple UIPageViewController qui affiche la valeur par défaut UIPageControl au bas des pages. Je me demande si il est possible de modifier la position de la UIPageControl, par exemple, d'être en haut de l'écran plutôt que le fond.
J'ai été en regardant autour et trouvé seulement de vieilles discussions, que dis-je créer mon propre UIPageControl.
Est-ce plus simple avec iOS8 et 9?
Merci.
source d'informationauteur Nguyen Thu
Vous devez vous connecter pour publier un commentaire.
Oui, vous pouvez ajouter des contrôleur de la page.
puis retirez
et
Puis ajouter un autre délégué de la méthode:
Remplacer la viewDidLayoutSubviews() de la pageviewcontroller et utiliser ce
La Shameerjan réponse est très bon, mais il a besoin d'une chose de plus à fonctionner correctement, et qui est de la mise en œuvre d'un autre délégué de la méthode:
C'est parce que si vous ne le faites pas, si vous déplacez le contrôle de page juste pour un peu, il va revenir à la position précédente - mais le contrôle de page vous montrera les différentes page.
Espère que cela aide!
Juste recherche de contrôle pagecontrol dans PageViewController sous-classe et de définir le cadre, l'emplacement ou ce que vous voulez
Pour swift:
rappelez-vous utiliser pageController.numberOfPages et délégué à la consultation de la page
puis retirez
et
Puis ajouter un autre délégué de la méthode:
Oui, le Shameerjan réponse est très bonne, mais au lieu d'ajouter une autre page de contrôle vous pouvez utiliser la page par défaut de l'indicateur:
puis étendre la taille de la UIPageViewController pour couvrir le fond de l'écart:
s voici un moyen très efficace pour modifier la position par défaut du contrôle pagecontrol pour la PageViewController sans avoir le besoin d'en créer un nouveau ...
Swift 4 version de @Jan réponse avec correction d'un bug lorsque l'utilisateur annule la transition:
D'abord, vous créez personnalisé contrôle pagecontrol:
Vous l'ajouter à la vue et à la positionner comme vous le souhaitez:
Ensuite, vous devez initialiser le
pageControl
:Enfin, vous avez besoin pour mettre en œuvre
UIPageViewControllerDelegate
et sa méthodepageViewController(_:didFinishAnimating:previousViewControllers:transitionCompleted:)
:En comparaison avec @Jan réponse, nous mettons à jour
self.pageControl.currentPage
à l'aide depageViewController(_:didFinishAnimating:previousViewControllers:transitionCompleted:)
(illustré ci-dessus), au lieu depageViewController(_:willTransitionTo:)
. Ce qui résout le problème de l'annulation de transition -pageViewController(_:didFinishAnimating:previousViewControllers:transitionCompleted:)
s'appelle toujours quand une transition qui a été achevé (il est aussi mieux imite le comportement de la norme de contrôle de page).Enfin, pour supprimer la page standard de contrôle, assurez-vous de retirer la mise en œuvre de
presentationCount(for:)
etpresentationIndex(for:)
méthodes de laUIPageViewControllerDataSource
- si les moyens sont mis en œuvre, la norme de contrôle de page seront présentés.Donc, vous ne voulez PAS avoir dans votre code:
Voici mon point de vue. Cette version uniquement des modifications de l'indicateur lorsque l'animation est terminée, c'est à dire lorsque vous arriverez à la page de destination.
C'est bon, et avec plus de changement
Assurez-vous de contrôle pagecontrol est ajouté en tant que sous-vue.
Puis dans
Viens d'obtenir le premier-vue-contrôleur et trouvez les index dans didFinishAnimating: