8

Naviagtion Controller に移動すると、フリップ アニメーションが完了した直後にナビゲーション バーがわずかにジャンプすることに気付きました。

これは、フリップ水平セグエを使用する場合にのみ行われ、デフォルトのスライド アップ アニメーションを使用する場合には行われません。

これは、問題を説明するために作成した GIF です (サイズが小さくて申し訳ありません!)。

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

「モーダル」というタイトルのナビゲーション バーに注目してください。アニメーションの後に約 20 ピクセル下にジャンプしていることに注意してください。

上記の例は新しいプロジェクトで作成されたもので、UINavigationController または UINavigationBar をサブクラス化していません。これが役立つ場合に備えて、ストーリーボードを次に示します。

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

私は何が欠けていますか?

4

1 に答える 1

20

viewWillAppearモーダルに提示しているコントローラーにこれを追加します。

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

そして、コントローラーを閉じるとき(上記と同じコントローラーで):

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

https://stackoverflow.com/a/19265558/254603を参照してください

于 2013-10-18T05:04:55.750 に答える