2011-02-23 8 views
17

Me gustaría tener un desplazamiento horizontal UIScrollView con paginación habilitada. Las páginas de esta vista de desplazamiento tienen diferentes anchuras, por lo que la distancia de desplazamiento difiere de una página a otra.Paginación UIScrollView con diferentes anchos de página

El objetivo es hacer un selector para diferentes momentos, por ejemplo .:

| Now | Yesterday evening | Last Week | Last Month | 
    ^   ^   ^   ^   <- stopps here 

Aquí | Now | tiene una anchura menor que | Yesterday evening |. Al recorrer estos valores, la vista de desplazamiento debe detenerse en el centro del valor correspondiente.

¿Es esto posible?

+0

Ver mi respuesta en esta pregunta: http://stackoverflow.com/a/10993426/60488 –

Respuesta

12

es sin duda posible, pero no de forma automática ...

supongo que debe implementar el método de protocolo UIScrollViewDelegate:

- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate{ 

} 

Es el método se llama cuando el usuario deja de mover el dedo sobre la ScrollView, se puede comprobar en su interior la coordenada de su contenido:

yourScrollView.contentOffset 

y después comprobar la cual uno de sus pa ge.x (registrarlos en una matriz cuando los crea, o verificar el origen de toda su vista agregada a la vista de desplazamiento) está más cerca de ella, luego vaya a la llamada offSet de su página (con animación):

- (void)setContentOffset:(CGPoint)contentOffset animated:(BOOL)animated 
+0

Gracias meronix, ¡eso era exactamente lo que estaba buscando! Algunos consejos adicionales: - 'UIScrollView.pagingEnabled' tiene que ser fijado a' NO' - Yo también tenía que poner en práctica el método de protocolo de UIScrollViewDelegate: '- (void) scrollViewDidEndDecelerating: (UIScrollView *) scrollView' – liefersfl

+3

de un mejor resultado terminé implementando el método '- scrollViewWillBeginDecelerating: (UIScrollView *) scrollView' – darune

Cuestiones relacionadas