2013-10-02 10 views
7

Zauważyłem, że po przejściu do kontrolera nawigacyjnego pasek nawigacji przeskakuje nieznacznie po zakończeniu animacji klapki.Wysokość zmian UINavigationBar po animacji przerzucania modalnego

Robi to tylko wtedy, gdy używam przerzucania w poziomie, a nie wtedy, gdy używam domyślnej animacji przesuwania.

Oto GIF zrobiłem, aby zilustrować problem (przepraszam za mały rozmiar!):

http://i.imgflip.com/3ym0y.gif

Zanotuj pasku nawigacyjnym pod tytułem „Modal” - zauważy przeskakuje o ~ 20 pikseli po animacji.

Powyższy przykład został utworzony przy użyciu nowego projektu - nie mam podclawianego UINavigationController lub UINavigationBar. Oto storyboard, w przypadku pomaga:

http://i.imgur.com/qFlK2oB.jpg

Czego mi brakuje?

Odpowiedz

20

Dodaj to do viewWillAppear w kontrolerze jesteś prezentując modally:

- (void)viewWillAppear:(BOOL)animated 
{ 
    // Workaround #1 for jumpy navbar 
    [self.navigationController.navigationBar.layer removeAllAnimations]; 
} 

A kiedy odwoływanie kontroler (tak w tym samym regulatorze jak wyżej):

// Workaround #2 for jumpy navbar 
[UIView transitionWithView:self.navigationController.view 
        duration:0.75 
        options:UIViewAnimationOptionTransitionFlipFromLeft 
       animations:nil 
       completion:nil]; 
[self dismissViewControllerAnimated:YES completion:nil]; 

Zobacz https://stackoverflow.com/a/19265558/254603

+0

Dzięki kolego, to załatwiło sprawę! – Koonga

+0

Czy ktoś może potwierdzić, że domyślny czas trwania animacji klapki wynosi faktycznie 0,75? Wygląda na to, że to także 1.0 lub pewna liczba wartości z tego zakresu. Dzięki! – James

Powiązane problemy