2010-08-20 12 views
9

He buscado y buscado un tutorial para esto, pero ninguno de ellos es lo que estoy buscando. Probé la muestra de Apple, pero solo son colores y no sé cómo hacerla. Todo lo que busco es una pantalla que muestre la página mientras muestra el control de la página. Cada vez que las páginas de vista de desplazamiento quiero que muestre una vista completamente diferente. No hay texto o imágenes diferentes, pero una vista diferente. Muy similar a la pantalla de inicio de la aplicación iPhone o ESPN Scorecenter. ¡Por favor ayuda! Gracias.¿Cómo se combina UIScrollview con UIPagecontrol para mostrar diferentes vistas?

Respuesta

4

Pruebe este marco: https://github.com/AdrianFlorian/AFImageViewer para presentar imágenes en una vista de desplazamiento utilizando un control de página para indicar la página actual.

No he agregado documentación todavía, pero puede ver ejemplos si clona el proyecto.

servicio le permite: - imágenes se descargan de Internet en un hilo separado por sólo dan una serie de URL (URL de imágenes) - dan una serie de UIImage objetos - implementar un delegado y gestionar la imagen para cada página usted mismo

16

Creé esta solución universal como los ejemplos encontrados fueron complicados y esto es legible para mí, el código debe ser autoexplicativo.

- (IBAction)changePage:(id)sender { 
    _pageControlUsed = YES; 
    CGFloat pageWidth = _scrollView.contentSize.width /_pageControl.numberOfPages; 
    CGFloat x = _pageControl.currentPage * pageWidth; 
    [_scrollView scrollRectToVisible:CGRectMake(x, 0, pageWidth, _scrollView.frame.size.height) animated:YES]; 
} 

- (void)scrollViewDidEndScrollingAnimation:(UIScrollView *)scrollView { 
    _pageControlUsed = NO; 
} 

- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView { 
    if (!_pageControlUsed) 
      _pageControl.currentPage = lround(_scrollView.contentOffset.x/
      (_scrollView.contentSize.width/_pageControl.numberOfPages)); 
} 
+0

en realidad, observe la respuesta de @ datinc. muy limpio y simple. – eric

+0

@Rene Dohan cómo obtener el mismo efecto al hacer clic en changePage y scrollViewDidEndDecelerating. zip zip movimiento de imágenes en scroll mismo tiene clic en control de página. – kiran

+0

@ReneDohan absolutamente! ¡Me encanta eso de SO! Solo señalé la otra solución porque la suya tenía tantos votos positivos, y en mi humilde opinión, la respuesta más reciente fue mejor. :-) – eric

14

Esto hace lo mismo que la respuesta @ReneDohan sin la necesidad de una variable para almacenar el estado de

- (IBAction)changePage:(id)sender { 
    CGFloat x = self.pageControl.currentPage * self.scrollView.frame.size.width; 
    [self.scrollView setContentOffset:CGPointMake(x, 0) animated:YES]; 
} 

- (void)scrollViewDidScroll:(UIScrollView *)scrollView { 
    if (scrollView.isDragging || scrollView.isDecelerating){ 
     self.pageControl.currentPage = lround(self.scrollView.contentOffset.x/(self.scrollView.contentSize.width/self.pageControl.numberOfPages)); 
    } 
} 
+0

opción más limpia del grupo, gracias – eric

+0

¡Bravo! Esto funcionó para mí cuando conecté el delegado de vista de desplazamiento al controlador de vista. –

Cuestiones relacionadas