我注意到在iOS8中,当我在UINavigationController中推送一个新的UIViewController时,旧的UIViewController滑出但在我的新顶级前景UIViewController中可见,如果它具有非透明背景。
当完成推送时,旧控制器就会消失,整个动画看起来很粗糙。
在iOS8之前,即使它是透明的,你也不会看到被推入的视图。好像有一个面具也滑进去了。任何人都知道一种解决这个问题的好方法,所以它就像旧的行为而没有用自定义动画重新实现整个推送动画?
答案 0 :(得分:2)
这不是错误,它是UINavigationController的标准行为。
在推送转换期间,UINavigationController以比第二个慢的速度滑动第一个控制器。完成第二个控制器的动画后,UINavigationController删除第一个视图控制器。如果第二个视图控制器具有透明背景,则在转换期间会看到第一个控制器。
您有3种方法可以实现目标:
答案 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