In meiner Bildlaufansicht möchte ich die aktuelle Seite abrufen, die angezeigt wird (möglicherweise ist die Seite nicht der richtige Begriff). Ich kann keine Variable finden, die dies enthält. Aber ich denke, es muss irgendwo gehalten werden, da der Indikator anzeigen kann, welche Unteransicht der Bildlaufansicht gerade angezeigt wird.
Ist das uns völlig verborgen oder gibt es eine Möglichkeit für mich, darauf zuzugreifen?
ios
objective-c
iphone
cocoa-touch
uiscrollview
TheNeil
quelle
quelle
UIScrollViewDelegate
, um die aktuelle Seite zu erhalten, wenn der Benutzer einen Bildlauf durchführt!Ich empfehle Ihnen ziemlich, diesen Code zu verwenden
Wenn Sie diesen Code verwenden, muss sich Ihre Ansicht nicht genau auf der Seite befinden, die indexOfPage Ihnen bietet. Dies liegt daran, dass ich Ihnen auch empfehle, diesen Code nur in dieser Methode zu verwenden
Dies wird aufgerufen, wenn Ihre scrollView mit dem Scrollen fertig ist und die Nummer Ihrer Seite wirklich scharf ist
Ich empfehle Ihnen, Ihre scrollView so einzustellen, dass sie mit diesem Code aktiviert ist
Also sollte es endlich so aussehen
quelle
In Kürze würde ich es in Erweiterung tun:
Dann rufen Sie einfach an:
quelle
Wie oben, aber als Kategorie
quelle
Ein anderer Weg :
quelle
Teilen Sie einfach den aktuellen Versatz durch die Seitengröße:
quelle
Hier gibt es bereits einige gute Antworten. Für Szenarien, in denen der Inhalt nicht genau in eine Seite passt - und wenn Sie wie ich das Ergebnis für a verwenden möchten
UIPageControl
, ist es wichtig, das zu verwendenceil
Funktion zu verwenden.Nehmen wir ein Beispiel, in dem ich "vier und ein bisschen" Inhaltsseiten habe.
Ich werde dies auf mein aktuelles Beispiel aus dem wirklichen Leben stützen. Die Breite der Inhaltsgröße beträgt 3140 Punkte. Basierend auf der Rahmengröße meiner Sammlungsansicht beträgt die Seitenbreite 728.
Die Anzahl der Seiten entspricht also:
Mein
numberOfPages
wird fünf sein. Vier davon werden vollständig angezeigt, und der letzte - Seite fünf - zeigt den verbleibenden Wert0.313
Inhalt.Jetzt,
numberOfPages
fünf Mittel ist , dass die Seite Indizes 0, 1, 2, 3 und 4 sein.Wenn ich nach rechts wische und in Richtung des endgültigen Versatzes blättere, wird der
scrollViewDidEndDecelerating
ergibt Methode einen endgültigen X-Versatz von 2412.Anwenden der Rundungsberechnung:
Das ist falsch Der Seitenbenutzer, der nach Versatz angezeigt wird, sollte sein:
Die korrekte Berechnung mit
ceil
:quelle
Für schnell würde ich nur diese verwenden
Ziemlich einfach, nimmt es im Grunde die Position x der Bildlaufansicht ein, dividiert sie durch die Breite der Bildlaufansicht und rundet sie dann ab.
quelle
In xCode 7.x swift 2.x können Sie Folgendes tun:
quelle
Die Lösung von Aoakenfo ist erstaunlich. Dies ist eine weitere Lösung, die Ihren Code mit der Funktion scrollViewDidScroll und PageController kombiniert
quelle
Ich habe dies aus einigen unserer Apps extrahiert ...
Vollständige Quelle hier
quelle
Verwenden Sie ein UIPageControl? Wenn ja, hat dies eine
currentPage
Eigenschaft. Wenn nicht, müssen Sie den Seitenindex aus dem scrollView-Offset berechnen.quelle
Wenn jemand nach einer Möglichkeit sucht, in C # für Xamarin vorzugehen
Dieser Getter und Setter sollten Ihnen auch die aktuelle Seite zur Verfügung stellen, damit Sie zur angegebenen Seite scrollen können
quelle
Swift 5.1+ UIScrollView-Erweiterung (ohne das Schlüsselwort return)
quelle