MRKTransitions 1.0.4

MRKTransitions 1.0.4

MRK Trace 维护。



MRKTrace Logo

MRKTransitions

MRKTransitions 是一个 Swift pod,用于简化屏幕间的过渡,同时也提供了一些默认的过渡效果。

将 'MRKTransitions' pod 添加到你的 Podfile

pod 'MRKTransitions'

用法

首先创建自己的过渡,继承自 MRKTransition,我们强烈推荐从 MRKTransitionSpecific 继承,这样您可以指定移动的视图所在的类。

class MyMRKTransition: MRKTransitionSpecific<ViewController1, ViewController2> {
        override func specificPush(from: ViewController1, to: ViewController2, context: UIViewControllerContextTransitioning, time: TimeInterval) {
        to.view.frame = from.view.bounds
        context.containerView.insertSubview(to.view, at: 0)
        let transitionOptions: UIView.AnimationOptions = [.transitionFlipFromRight, .showHideTransitionViews]
        UIView.transition(from: from.view, to: to.view, duration: time, options: transitionOptions) { completed in
            context.completeTransition(completed)
        }
    }
}

恭喜!畅饮一杯🍺您创建了第一个可扩展的过渡!

现在让我们将其投入实际使用,为此我们需要创建一个 Transition 代理并将其包含到导航流程中。只需使用 MRKNavigationTransitionDelegate 并将 Transition 类作为参数传递即可

let transitionDelegate = MRKNavigationTransitionDelegate(MyMRKTransition.self)

此代理可用于 Push/Pop 过渡,以及 Present 视图控制器

//When the ViewController is about to be presented
viewController.transitioningDelegate = presenter.transitionDelegate

但如果您可以自动化这个过程会更好吗?如果是这样,只需将您的 App 导航器从 MRKGenericNavigationController 中扩展并重写 transitionRules 属性!👑👑👑使用 transitionRules,您可以指定从哪个 ViewController 过来,到哪个 ViewController 返去,以及在这种情况下要使用的过渡类型!

class NavigationController: MRKGenericNavigationController {
    override var transitionRules: [MRKTransitionRule] {
        return [ ViewController1.self ~ MyMRKTransition.self ~ ViewController2.self ]
    }
}

现在,只需将此 NavigationController 作为您应用程序的根即可,它将负责使用必要的动画!

我希望这个 pod 对您有用,如果您觉得它救了您的命,您可以给我一杯啤酒!🍺