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

8

我注意到当我使用翻转动画切换到导航控制器时,导航栏会在翻转动画完成后稍微向右跳动。

只有当我使用水平翻转动画时才会出现这种情况,而默认的向上滑动动画则不会。

这是我制作的GIF以说明问题(对于尺寸很小我很抱歉!):

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

请注意标题为“Modal”的导航栏 - 注意动画后它向下跳了约20像素。
上面的示例是使用全新项目创建的 - 我没有子类化UINavigationController或UINavigationBar。如果有帮助,这是故事板:

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

我错过了什么?
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://dev59.com/fWIk5IYBdhLWcg3wl_Ep#19265558


有人能验证默认的翻转动画持续时间是否实际上是0.75吗?似乎它也可以是1.0或该范围内的许多值。谢谢! - James

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接