2012-03-02 13 views
11

Jak utworzyć ukrywający/odkrywający pasek nawigacji, tak jak robi to pinterest i wiele innych aplikacji? Wiem, że podstawową ideą jest użycie delegata UIScrollView i wykrycie, czy przewijam w górę lub w dół i na tej podstawie pokaż pasek nawigacji. Czy powinienem także dostosować wysokość widoku navcontroller, jeśli pasek nawigacji jest ukryty? Jak to działa?jak stworzyć styl pinterest ukrywając/odkrywając pasek nawigacji/kart?

Odpowiedz

26

Mam przykładowy projekt znajdujący się na github, który robi dokładnie Pinterest/piictu stylu 'ukrycia rzeczy UINavigationController/UITabBarController'

https://github.com/tonymillion/ExpandingView

+2

Świetny przykład, dzięki człowieku! – codingrhythm

+1

cudowny, działa jak amulet –

+0

Znalazłem bardzo łatwy w użyciu biblioteki: https://github.com/inamiy/YIFullScreenScroll – ilya

0

Prawdopodobnie spróbuję stworzyć własny kontroler główny z paskiem przewijania jako widokiem głównym i umieścić w nim widok kontrolera nawigacyjnego. Nie można użyć paska przewijania wewnątrz widoku paska nawigacyjnego, ale uważam, że nie jest on potrzebny w tym przypadku.

Jeśli to podejście nie działa, prawdopodobnie utworzyłbym własny kontroler, który naśladuje wygląd kontrolera nawigacyjnego.

6

próbowałam https://github.com/tonymillion/ExpandingView i wpadł bandą zagadnień.

Skończyło się na tym, że przetasowałem własny kontroler nawigacyjny, aby zsynchronizować wszystkie animacje i użyłem tego kodu przewijania, by dowiedzieć się, czy powinienem rozwinąć lub zneutralizować. 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]; 
    } 

}