En mi vista de desplazamiento, quiero obtener la página actual que se muestra (tal vez la página no es el término correcto). No puedo encontrar ninguna variable que contenga esto. Pero creo que debe mantenerse en algún lugar, ya que el indicador puede mostrar qué vista secundaria de la vista de desplazamiento se está mostrando actualmente.
¿Está completamente oculto para nosotros o hay alguna forma de acceder a él?
ios
objective-c
iphone
cocoa-touch
uiscrollview
TheNeil
fuente
fuente
UIScrollViewDelegate
para obtener la página actual cuando el usuario se desplaza!Te recomiendo que uses este código
pero si usa este código, su vista no necesita estar exactamente en la página que le da indexOfPage. Es porque también te recomiendo que uses este código solo en este método
que se llama cuando su scrollView termina de desplazarse y para que el número de su página sea realmente nítido
Le recomiendo que configure su scrollView en paginado habilitado con este código
Así que finalmente debería verse así
fuente
En rápido lo haría en extensión:
Entonces solo llama:
fuente
Como arriba pero como categoría
fuente
Otra forma :
fuente
Simplemente divida el desplazamiento actual por el tamaño de la página:
fuente
Aquí ya hay algunas buenas respuestas. Sin embargo, para escenarios donde el contenido no encaja exactamente en una página, y si, como yo, desea usar el resultado para un
UIPageControl
, entonces es esencial usar elceil
función.Tomemos un ejemplo en el que tengo "cuatro y un poco" páginas de contenido.
Basaré esto en mi ejemplo actual de la vida real. El ancho del tamaño del contenido es 3140 puntos. Según el tamaño del marco de vista de mi colección, el ancho de la página es 728.
Entonces el número de páginas es igual a:
Mi
numberOfPages
va a ser cinco. Cuatro de los cuales se mostrarán en su totalidad, y el último de los cuales, la página cinco, mostrará el0.313
contenido restante .Ahora,
numberOfPages
ser cinco significa que los índices de página serán 0, 1, 2, 3 y 4.Cuando deslizo el dedo hacia la derecha, paginando hacia el desplazamiento final, el
scrollViewDidEndDecelerating
método da un desplazamiento X final de 2412.Aplicando el cálculo de redondeo:
Eso es incorrecto. La página que el usuario está viendo por desplazamiento debe ser:
El cálculo correcto usando
ceil
:fuente
Por rapidez, solo usaría esto
Bastante sencillo, básicamente toma la posición x de la vista de desplazamiento, la divide por el ancho de la vista de desplazamiento y luego la redondea.
fuente
En xCode 7.x swift 2.x puede hacer:
fuente
La solución de Aoakenfo es asombrosa, esta es otra solución que combina su código con la función scrollViewDidScroll y PageController
fuente
Extraje esto de un par de nuestras aplicaciones ...
Fuente completa aquí
fuente
¿Está utilizando un UIPageControl? Si es así, tiene una
currentPage
propiedad. De lo contrario, creo que deberá calcular el índice de la página a partir del desplazamiento scrollView.fuente
Si alguien busca la forma de hacerlo en C # para Xamarin
Este getter y Setter deben proporcionarle la página actual y permitirle desplazarse a la página especificada
fuente
Extensión Swift 5.1+ UIScrollView (se omite la palabra clave de retorno)
fuente