Hay algunas buenas respuestas aquí ya.Sin embargo, para escenarios donde el contenido no se ajusta exactamente a una página, y si desea utilizar el resultado para un UIPageControl
, entonces es esencial usar la función ceil
.
Veamos un ejemplo en el que tengo páginas de contenido "cuatro y un poco".
Voy a basar esto en mi ejemplo actual de la vida real. El ancho del tamaño del contenido es 3140 puntos. Con base en mi opinión colección tamaño del marco, ancho de página es 728.
Así número de páginas es igual a:
3140/728 = 4.313
Mi numberOfPages
va a ser cinco. Cuatro de los cuales se mostrarán en su totalidad, y el último de ellos, página cinco, mostrará el contenido restante de 0.313
.
Ahora, numberOfPages
ser cinco medios que los índices de página será 0, 1, 2, 3, y 4.
Cuando desliza el dedo hacia la derecha, la paginación hacia compensar el final, el método scrollViewDidEndDecelerating
da un desplazamiento final de X de 2412.
la aplicación del cálculo de redondeo:
2412/728 = 3.313 then rounded = 3
Eso es incorrecto. Página usuario está viendo por el desplazamiento debe ser:
Offset/Page User Is Viewing
0 0
728 1
1456 2
2184 3
2412 4
El cálculo correcto usando ceil
:
private func pageForOffset(offset:CGFloat, pageWidth width:CGFloat) -> Int
{
let page = Int(ceil(offset/width))
NSLog("\(__FUNCTION__) offset \(offset) width \(width) page \(page) ")
return page
}
realmente parecen como un descuido por parte de Apple ... – elsurudo
No se olvide de utilizar el 'UIScrollViewDelegate' para obtener la página actual cuando el usuario se desplaza! –
Esto puede tener problemas cuando se trata de rotación. –