8

我注意到,当我转到导航控制器时,导航栏会在翻转动画完成后略微跳跃。

只有当我使用翻转水平转场时才会这样做,而不是当我使用默认的向上滑动动画时。

这是我为说明问题而制作的 GIF(对不起,尺寸太小了!):

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

注意标题为“Modal”的导航栏——注意它在动画后向下跳约 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 回答