如何将 UInavigationcontroller 动画与库 Motion 一起使用?

How to use the UInavigationcontroller animation with library Motion?

我在 GitHub 上遇到了一个名为 Motion 的库,它提供了视图和控制器的过渡集。 基于网站,要在导航控制器上使用动画,我们需要创建一个新的导航控制器 class,如下所示,我应用了新的导航控制器。但是当它失败并且没有推送到新的视图控制器时。

GitHub link 是 https://github.com/CosmicMind/Motion

class AppNavigationController: UINavigationController {
    open override func viewDidLoad() {
        super.viewDidLoad()
        isMotionEnabled = true
        motionNavigationTransitionType = .zoom
    }
}

然后在主视图上:

let navigation = AppNavigationController()
navigation.pushViewController(newViewController, animated: false)

如果您在整个应用中使用 Motion 的动画 NavigationController,您可以在 AppDelegatedidFinishLaunchingWithOptions 方法中以这种方式进行设置。

let newViewController = NewViewController(nibName: "NewViewController",bundle: nil)
let navigation = AppNavigationController(rootViewController: newViewController!)
self.window?.rootViewController = navigation
self.window?.makeKeyAndVisible()

更新: 如果你想创建一个单独的 NavigationController 并将特定的 UIViewController 推送到它,那么你需要 呈现 导航控制器而不是推送它。见下文。

let motionNavController = AppNavigationController(rootViewController: galleryViewController)
motionNavController.motionNavigationTransitionType = .none
motionNavController.isNavigationBarHidden = true
self.present(motionNavController, animated: true, completion: nil)