2011-01-21 9 views
6

Soy un principiante en lo que respecta al control de páginas, y es por eso que no estoy seguro al 100% si mi título coincide con lo que quiero. Quiero hacer un UIPageControl que cuando el usuario pase por la pantalla, la vista cambie a otra vista y el UIPageController en la parte inferior de la pantalla se actualice solo. Además, para hacer que mi solicitud sea aún más confusa, quiero una barra de pestañas en la parte inferior de la pantalla que permanezca activada a medida que cambian las vistas.UIViews con UIPageControl

Un gran ejemplo de esto es de la Iconfactory Ramp Champ: http://img.slidetoplay.com/screenshots/ramp-champ_5.jpg

La barra en la parte inferior permanece fija mientras que el resto de los elementos en la pantalla se mueve. ¿Cuál sería la forma más fácil de hacer esto?

EDIT: Sé que tengo que usar un UISrollView, sólo que no sé cómo hacer para implementarlo ...

Respuesta

22

creo que lo que estás buscando es en realidad un UIScrollView con pagingEnabled establece en SÍ. Puede dejar la vista de desplazamiento como una vista sobre una UITabBar regular. Utilizará un UIPageControl para obtener los pequeños puntos. Puede actualizarlo programáticamente cuando UIScrollView se desplaza a una página implementando un método delegado apropiado de la vista de desplazamiento, quizás -scrollViewDidScroll :.

Supongamos que tiene dos ivars: scrollView y pageControl. Cuando sepa cuántas páginas tendrá su vista de desplazamiento, puede establecer el tamaño del contenido de scrollView. Debe ser un múltiplo de los límites de scrollView. Por ejemplo, si el número de páginas es estática puede hardcode en su -viewDidLoad ...

- (void)viewDidLoad { 
    // Any other code. 

    scrollView.pagingEnabled = YES; 
    scrollView.contentSize = CGSizeMake(scrollView.bounds.size.width * 3, scrollView.bounds.size.height); // 3 pages wide. 
    scrollView.delegate = self; 
} 

Entonces, para actualizar sus pequeños puntos ...

- (void)scrollViewDidScroll:(UIScrollView *)scrollView { 

    CGFloat pageWidth = scrollView.bounds.size.width; 
    NSInteger pageNumber = floor((scrollView.contentOffset.x - pageWidth/2)/pageWidth) + 1; 
    pageControl.currentPage = pageNumber; 
} 
+0

Gracias, ¿tiene algún tipo de código fuente sobre cómo hacer esto? (No puedo encontrar ninguno) –

+0

@Andy B, sí. Edité mi respuesta con un enfoque estándar. –

+0

Me siento realmente tonto en este momento; todavía no está funcionando. –

2

Es necesario utilizar una UIScrollView

Asumiendo que tiene un nombre denominada Ivar ScrollView

int amountOfFrames = 10; 
    scrollView.pagingEnabled = TRUE; 
scrollView.contentSize = CGSizeMake(scrollView.frame.size.width * amountOfFrames, scrollView.frame.size.height); 
    scrollView.delegate = self; 

usted será continuación, tendrá que poner en práctica los métodos de delegados necesarios, de modo que usted puede actualizar su control de la página

- (void)scrollViewDidScroll:(UIScrollView *)sender 
{ 
    // Switch the indicator when more than 50% of the previous/next page is visible 
    CGFloat pageWidth = scrollView.frame.size.width; 
    int page = floor((scrollView.contentOffset.x - pageWidth/2)/pageWidth) + 1; 
    pageControl.currentPage = page; 
} 

Es necesario colocar cualquier contenido que desea ser desplazable en el interior de éstos ScrollView, idealmente lazyload en él, si el contenido que se muestra requerirá mucha memoria Heap, use el scrollviewDidScroll para eliminar y agregar contenido en las posiciones requeridas

+0

Gracias por la ayuda, pero eso no lo hizo significa mucho para mí He estado desarrollando por solo unos siete meses. ¿Tienes algún código fuente? –

Cuestiones relacionadas