就在刚刚,我看到城神 (opens new window) Star 了 WXTabBarController (opens new window) 。
我点进去看了一下,发现这是一个实用的转场。
我也 Star 了一番。事实上,之前写的 TransitionTreasury 已经有这个效果了,我想使用起来一定会更简单更容易定制。
PS:我不是在说 WXTabBarController 不好,这是一个很好的项目,我很喜欢。我很喜欢这个作者,我正在学习 RxSwift ,而作者的 MVVMReactiveCocoa (opens new window) 必将成为我的学习项目。好啦,不扯这些了,我只是希望大家真的会去用这个 TransitionTreasury (opens new window)。
我的锅,不论是起名字,还是给轮子打广告,都提到了 Treasury ,事实上这不是一个转场库,我更愿意称之为 转场框架 。动画可以认为是作为一个动画示例。我们完全可以写自己的动画。
很简单,完整的使用方法已经在 TabBarDemo 中。这里理解一下设计的过程。
实时上我没有为这个 Slide 动画增加任何的手势,我们需要自己添加指定,不论是边缘滑动还是全屏滑动。
记住,这只是框架只是一个框架框架。我只是在这里捋了各种的 delegate 关系。
如果我们不需要手势,直接:
if let tabBarController = window?.rootViewController as? UITabBarController {
tabBarController.tr_transitionDelegate = TRTabBarTransitionDelegate(method: TRTabBarTransitionMethod.Slide)
tabBarController.tr_delegate = self
}
需要手势的时候我们只需要传入对应的 gesture 就 OK 了~
func swipeTransition(sender: UIPanGestureRecognizer) {
switch sender.state {
case .Began :
if sender.translationInView(sender.view).x < 0 {
tabBarController?.tr_selected(1, gesture: sender)
}
default : break
}
}
yooooooooo~ 就是这样简单。。。
需要记住的只有一点:
tabBarController?.tr_selected(1, gesture: sender)
这一行代码只执行一次,所以一般我们放在 case .Began
中,当然你可以放在 case .Changed
中,任何你喜欢的情况下。只是切记,每次转场期间只执行一次~
复习一下地址 TransitionTreasury (opens new window) 。
动画的代码也是可以复用的,完全可以粘贴复制,修改需要的转场时间等等参数。
有什么问题随时可以来 diao 我。当然,我更希望直接在 GitHub 上放 Issue 。
啦~ 为什么写这个框架,在自定义转场时,需要处理各种 delegate 关系,这是很头疼的事。
我非常欢迎大家来 diao 这个项目,pr issue 都可以~ 我也更期待你添加动画到这个框架中。 复习一下动画地址:transitiontreasury.com (opens new window) 。
最近苦于 RxSwift 的系列教程,所以我保证这份教程会在月底与大家见面在,然后月底过后我开始为大家详细介绍 TransitionTreasury 的使用。届时会有几个使用 RxSwift 和 TransitionTreasury 的 Demo 登场,也欢迎大家来 diao 这个系列教程。好啦~ 预告一下代码地址:LearnRxSwift (opens new window) 。