2013-10-02 11 views
7

Ich habe festgestellt, dass wenn ich zu einem Naviagtion Controller übergehe, die Navigationsleiste leicht nach dem Abschluss der Flip-Animation springt.Höhe der UINavigationBar ändert sich nach modaler Flip-Animation

Es tut dies nur, wenn ich einen horizontalen Flip-Titel benutze, und nicht, wenn ich die Standard-Slide-Up-Animation verwende.

ist hier ein GIF ich gemacht habe, das Problem zu veranschaulichen (sorry über die winzige Größe!):

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

Beachten Sie die Navigationsleiste mit dem Titel „Modal“ - es merken springt um ~ 20 Pixel nach der Animation herunter.

Das obige Beispiel wurde mit einem neuen Projekt erstellt - ich habe weder UINavigationController noch UINavigationBar subclasiert. Hier ist das Drehbuch, falls es hilft:

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

Was bin ich?

Antwort

20

Fügen Sie diese auf viewWillAppear in der Steuerung Sie präsentieren modal:

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

Und wenn die Zurückweisung der Controller (so in der gleichen Steuerung wie oben):

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

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

+0

Danke Kumpel, das hat den Trick gemacht! – Koonga

+0

Kann jemand überprüfen, dass die Standarddauer der Flip-Animation tatsächlich 0,75 ist? Scheint, als wäre es auch 1.0 oder eine Anzahl von Werten in diesem Bereich. Vielen Dank! – James

Verwandte Themen