TransitionTreasury 使用 Tip : TabBar 的滑动切换效果

就在刚刚,我看到城神 (opens new window) Star 了 WXTabBarController (opens new window)

我点进去看了一下,发现这是一个实用的转场。

我也 Star 了一番。事实上,之前写的 TransitionTreasury 已经有这个效果了,我想使用起来一定会更简单更容易定制。

PS:我不是在说 WXTabBarController 不好,这是一个很好的项目,我很喜欢。我很喜欢这个作者,我正在学习 RxSwift ,而作者的 MVVMReactiveCocoa (opens new window) 必将成为我的学习项目。好啦,不扯这些了,我只是希望大家真的会去用这个 TransitionTreasury (opens new window)

# 定义错误

我的锅,不论是起名字,还是给轮子打广告,都提到了 Treasury ,事实上这不是一个转场库,我更愿意称之为 转场框架 。动画可以认为是作为一个动画示例。我们完全可以写自己的动画。

# 与 WXTabBarController 的对比

  • 使用 Swift
  • 不使用继承
  • 仅仅是轻量的转场框架,但同时支持 Push Present TabBar 三种转场方式
  • 类型安全
  • 更多更丰富的动画 transitiontreasury.com (opens new window)
  • 易移植动画,你可以移植任何 GitHub 上已有的转场效果到该项目中

# 如何使用滑动切换效果

很简单,完整的使用方法已经在 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)