具有透明UIView问题的iOS8 UINavigationController push / pop

时间:2014-09-16 07:34:48

标签: uinavigationcontroller transparency ios8

我注意到在iOS8中,当我在UINavigationController中推送一个新的UIViewController时,旧的UIViewController滑出但在我的新顶级前景UIViewController中可见,如果它具有非透明背景。

当完成推送时,旧控制器就会消失,整个动画看起来很粗糙。

在iOS8之前,即使它是透明的,你也不会看到被推入的视图。好像有一个面具也滑进去了。任何人都知道一种解决这个问题的好方法,所以它就像旧的行为而没有用自定义动画重新实现整个推送动画?

enter image description here

2 个答案:

答案 0 :(得分:2)

这不是错误,它是UINavigationController的标准行为。

在推送转换期间,UINavigationController以比第二个慢的速度滑动第一个控制器。完成第二个控制器的动画后,UINavigationController删除第一个视图控制器。如果第二个视图控制器具有透明背景,则在转换期间会看到第一个控制器。

您有3种方法可以实现目标:

  1. 将相同的背景(不透明)添加到第二个ViewContorller。
  2. 创建自定义转换,如下所述:Navigation controller custom transition animation
  3. 使用UIView动画制作转场。

答案 1 :(得分:-2)

这对我有用:

ios7:

presentingVC.modalPresentationStyle = UIModalPresentationCurrentContext;

iOS8上:

modalVC.modalPresentationStyle = UIModalPresentationOverCurrentContext;
modalVC.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;

(modalVC是您要呈现的视图)

然后在两者中:

[presentingVC presentViewController:modalVC animated:YES completion:nil];

这是原始来源: http://www.raywenderlich.com/forums/viewtopic.php?f=2&t=18661