Dans ma vue de défilement, je veux obtenir la page actuelle qui est affichée (peut-être que la page n'est pas le terme correct). Je ne trouve aucune variable qui contienne cela. Mais je pense qu'il doit être tenu quelque part, car l'indicateur est capable de montrer quelle sous-vue de la vue de défilement est actuellement affichée.
Cela nous est-il complètement caché ou y a-t-il un moyen pour moi d'y accéder?
ios
objective-c
iphone
cocoa-touch
uiscrollview
TheNeil
la source
la source
UIScrollViewDelegate
pour obtenir la page actuelle lorsque l'utilisateur fait défiler!Je vous recommande plutôt d'utiliser ce code
mais si vous utilisez ce code, votre vue n'a pas besoin d'être exactement sur la page que indexOfPage vous donne. C'est parce que je vous recommande également d'utiliser ce code uniquement dans cette méthode
qui est appelé lorsque votre scrollView finit de défiler et d'avoir le numéro de votre page vraiment net
Je vous recommande de définir votre scrollView sur paginé activé avec ce code
Donc finalement ça devrait ressembler à ça
la source
En rapide je le ferais en extension:
Alors appelez simplement:
la source
Comme ci-dessus mais en tant que catégorie
la source
Une autre façon :
la source
Divisez simplement le décalage actuel par la taille de la page:
la source
Il y a déjà de bonnes réponses ici. Cependant, pour les scénarios où le contenu ne rentre pas exactement dans une page - et si comme moi vous voulez utiliser le résultat pour a
UIPageControl
, alors il est essentiel d'utiliser laceil
fonction.Prenons un exemple où j'ai "quatre et un peu" pages de contenu.
Je vais baser cela sur mon exemple actuel de la vie réelle. La largeur de la taille du contenu est de 3140 points. En fonction de la taille du cadre de vue de ma collection, la largeur de la page est de 728.
Donc, le nombre de pages est égal à:
Mon
numberOfPages
va avoir cinq ans. Quatre d'entre eux seront affichés dans leur intégralité, et le dernier - la page cinq - montrera le reste0.313
du contenu.Maintenant,
numberOfPages
être cinq signifie que les index de page seront 0, 1, 2, 3 et 4.Lorsque je glisse vers la droite, en recherchant le décalage final, la
scrollViewDidEndDecelerating
méthode donne un décalage X final de 2412.Application du calcul d'arrondi:
C'est incorrect. La page que l'utilisateur consulte par décalage doit être:
Le calcul correct en utilisant
ceil
:la source
Pour rapide, je voudrais juste utiliser ça
Assez simple, il prend essentiellement la position scrollview x, la divise par la largeur de scrollview, puis l'arrondit.
la source
Dans xCode 7.x swift 2.x, vous pouvez faire:
la source
La solution d'Aoakenfo est incroyable, c'est une autre solution combinant votre code avec la fonction scrollViewDidScroll et PageController
la source
J'ai extrait ceci de quelques-unes de nos applications ...
Source complète ici
la source
Utilisez-vous un UIPageControl? Si tel est le cas, cela a une
currentPage
propriété. Sinon, je pense que vous devrez calculer l'index de la page à partir du décalage scrollView.la source
Si quelqu'un cherche un moyen de faire en C # pour Xamarin
Ce getter et Setter devraient vous fournir la page actuelle et vous permettre de faire défiler jusqu'à la page spécifiée
la source
Extension Swift 5.1+ UIScrollView (en omettant le mot-clé de retour)
la source