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

par*_*oid 10 transparency uinavigationcontroller ios8

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

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

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

在此输入图像描述

Igo*_*gor 2

这不是一个错误,而是 UINavigationController 的标准行为。

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

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

  1. 将相同的背景(不透明)添加到第二个 ViewContorller。
  2. 创建自定义过渡,如下所述:导航控制器自定义过渡动画
  3. 使用 UIView 动画进行过渡。