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

标签 ios objective-c ios7

我注意到,当我转到 Naviagtion Controller 时,导航栏会在翻转动画完成后立即略微跳动。

它仅在我使用翻转水平转场时执行此操作,而在我使用默认的向上滑动动画时不执行此操作。

这是我为说明问题而制作的 GIF(抱歉尺寸太小了!):

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

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

上面的例子是用一个新项目创建的——我没有子类化 UINavigationController 或 UINavigationBar。这是 Storyboard ,以防有帮助:

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

我错过了什么?

最佳答案

将此添加到您以模态方式呈现的 Controller 中的 viewWillAppear:

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

并且在关闭 Controller 时(因此在与上面相同的 Controller 中):

// 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

关于ios - 模态翻转动画后 UINavigationBar 的高度发生变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19131456/

相关文章:

iphone - 控制其他应用程序的音量

iphone - 如何在 iPhone SDK 中包含和使用新字体?

iphone - 来自 NSDate 的日期名称?

ios - 自定义警报 View 的验证

uitableview - iOS : label stops updating when user scrolls through table view

ios - UIScrollView Zoom 在 iOS 7 中不起作用,但在 iOS 8 中运行良好

ios - “(_, _, _) -> Void”无法转换为 'Result<Post> -> Void'

ios - 构成应用程序数据模型的数组变量最好放在哪里?

Xcode 的 IOS 12.4 设备支持文件

objective-c - 如何交换big 到主机int8 数字?