模态翻转动画后 UINavigationBar 的高度发生变化

Posted

技术标签:

【中文标题】模态翻转动画后 UINavigationBar 的高度发生变化【英文标题】:Height of UINavigationBar changes after modal flip animation 【发布时间】:2013-10-02 06:55:10 【问题描述】:

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

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

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

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

注意标题为“Modal”的导航栏——注意它在动画后向下跳约 20 像素。

上面的例子是用一个新项目创建的——我没有继承 UINavigationController 或 UINavigationBar。这是故事板,以防万一:

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

我错过了什么?

【问题讨论】:

【参考方案1】:

将此添加到您以模态方式呈现的控制器中的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://***.com/a/19265558/254603

【讨论】:

谁能验证默认的翻转动画持续时间实际上是 0.75?似乎它也是 1.0 或该范围内的多个值。谢谢!

以上是关于模态翻转动画后 UINavigationBar 的高度发生变化的主要内容,如果未能解决你的问题,请参考以下文章

使用模态动画推送 ViewController(水平翻转)

iOS - 带有动画的程序化模态segue(例如翻转)

UIView翻转动画

关闭从模态呈现的视图控制器翻转的视图控制器

如何在 UINavigationBar 上添加 UISearchBar 动画

带有搜索图标的 UINavigationBar - 单击时推送模态搜索视图