我将 iOS 7 中引入的新的自定义视图控制器转换与 UINavigationController 结合使用。我实施了
-navigationController:animationControllerForOperation:fromViewController:toViewController:
在我的 中UINavigationControllerDelegate
,实现了UIViewControllerAnimatedTransitioning
协议并且自定义转换效果很好。
但是,我想在推送视图控制器时防止导航栏中的移位动画。有趣的是,弹出动画很好,导航项只是 alpha-faded 而不是移位。但是推送动画将导航项从右侧移动。
我通过替换新视图控制器并将其添加到数组中找到了部分-pushViewController:animated:
解决-setViewControllers:animated:
方案viewControllers
。这会执行正确的 alpha 渐变动画 - 除了第一次将视图控制器推送到堆栈上。随后的弹出/推送很好。
知道如何实现这种效果吗?Calendar.app 和 Photos.app 也实现了这一点,所以它应该是可能的(尽管它可能是使用集合视图时的特定行为)。