2012-03-02 14 views
11

Come faccio a creare una barra di navigazione nascosta/invisibile come fanno le cose su pinterest e molte altre app? So che l'idea di base è utilizzare il delegato UIScrollView e rilevare se sto scorrendo verso l'alto o verso il basso e mostrare la barra di navigazione in base a ciò. Quindi dovrei anche regolare l'altezza della vista del controller di navigazione se la barra di navigazione è nascosta? Come funziona?come creare un pinterest style per nascondere/nascondere la nav/tab bar?

risposta

26

Ho un progetto di esempio si trova su GitHub che fa esattamente il pinterest/piictu stile 'nascondere la roba UINavigationController/UITabBarController'

https://github.com/tonymillion/ExpandingView

+2

Grande esempio, grazie amico! – codingrhythm

+1

meraviglioso, funziona come un fascino –

+0

Ho trovato una libreria molto facile da usare: https://github.com/inamiy/YIFullScreenScroll – ilya

0

Probabilmente proverei a creare il mio controller di root con la barra di scorrimento come vista principale e mettere la vista del controller di navigazione in esso. Non è possibile utilizzare la barra di scorrimento all'interno della vista della barra di navigazione, ma credo che non sia necessario in questo caso.

Se questo approccio non funziona probabilmente creerei il mio controller che simula l'aspetto del controller di navigazione.

6

Ho provato https://github.com/tonymillion/ExpandingView e sono imbattuto in un mucchio di problemi.

Ho finito con il rollare il mio controller di navigazione per ottenere tutte le animazioni sincronizzate e ho usato questo codice scrollview per capire se dovevo espandermi o contrarre. iOS> = 5.0

- (void)scrollViewDidScroll:(UIScrollView *)scrollView { 
    MyCustomNavController* navController = (MyCustomNavController*)self.parentViewController; 
    if([scrollView.panGestureRecognizer translationInView:self.view].y < 0.0f) { 
     [navController setExpanded:YES animated:YES]; 
    } else if ([scrollView.panGestureRecognizer translationInView:self.view].y > 0.0f ) { 
     [navController setExpanded:NO animated:YES]; 
    } 

}