我使用下面的委托方法在我的应用中显示动画。
func navigationController(_ navigationController: UINavigationController,
animationControllerFor operation: UINavigationControllerOperation, from fromVC: UIViewController,
to toVC: UIViewController) -> UIViewControllerAnimatedTransitioning?
但是,上面的方法并没有调用navigationController的rootViewController。
提前感谢您的帮助。
答案 0 :(得分:1)
调用您引用的方法来设置过渡动画。但是,rootViewController被添加到navigationController而没有任何动画,因为之前没有要转换的视图控制器。因此,不会调用委托方法。
即使您不使用指定rootViewController的便捷初始化程序,而是手动推送rootViewController,为true
参数指定animated:
,也是如此。您会注意到即使在这种情况下,navigationController也会在没有动画的情况下推送rootViewController(从navigationController(:,willShow:,animated:)
调用animated
参数设置为false
开始。
AFAIK,无法过渡动画rootViewController。
另一种解决方案可能是实施navigationController(:, willShow:, animated:)
,检查是否self.viewControllers.first == viewController
,然后手动设置viewController.view
动画。