美文网首页
Swifty转场动画和侧滑动画,并实现了微信的侧滑浮窗效果

Swifty转场动画和侧滑动画,并实现了微信的侧滑浮窗效果

作者: 就是算了吧 | 来源:发表于2019-03-21 11:08 被阅读0次

    看了一些网上的实现效果,主要是悬浮窗的,转场动画都没能做到微信的效果。作为完美主义者,还是觉得有所欠缺,于是想着就自己做吧 。另外也是对转场动画做的比较多,做一个总结。

    效果图

    image
    image

    说明

    侧滑动画结束后展示悬浮球没有做,一个是不属于转场动画,二个是已经有不错的实现效果了。如果有自己的悬浮窗实现,想添加进去,该库也有相应的协议支持扩展。
    该库的目的做成一个方便扩展,低耦合的转场和侧滑动画的库, 后面会添加对present的支持,以及会增加更多的动画效果。

    使用介绍

    1. 设置UINavigationController delegate

    class NavigationController: UINavigationController {
    
     // 微信悬浮窗效果的转场动画控制器
        let floatingControl: FloatingKeeperControl = {
            let control = FloatingKeeperControl()
            // 设定需要动画效果
            //        control.floatingTransitionProducer.underAnimationType =
            //        control.floatingTransitionProducer.uponAnimationType =
            return control
        }()
    
        override func viewDidLoad() {
            super.viewDidLoad()
            
            // 设定好转场动画控制器之后,设置为UINavigationController 的delegate
            // 若已设置, 则需要实现NavigationInteractiveControlType,并
            // 重写 navigationController(_:animationControllerFor:from:to:) 和 navigationController(_:interactionControllerFor:)方法,
            // 可参照 GeneralTransitionControl
            delegate = floatingControl
       }
    }
    

    2. 添加自定义侧滑效果

    override func viewDidLoad() {
          super.viewDidLoad()
          
          /// 默认的手势是左侧,向右侧滑。
          /// 如果你的设置的Transition动画是从左侧push,则这里设定为.right
          if let gesture = self.lm.interactivePop(.left) {
              view.addGestureRecognizer(gesture)
          }
      }
    

    3. 实现协议 FloatingKeepAble

    // FloatingKeepAble 协议不需要额外实现,只需要添加给需要触发 UIViewController即可
    // 该协议用于微信浮窗效果。只需要转场和侧滑动画只需要1和2即可
    class FloatingAbleViewController: UIViewController, FloatingKeepAble {
    // your implement 
    }
    

    设计思路

    主要是3个协议

    • NavigationInteractiveControlType: 管理下面两个工厂类。并可以方便的组合和替换他们
    • InteractiveProducerType: 生成侧滑动画UIViewControllerInteractiveTransitioning对象
    • AniTransitionProducerType: 生成转场动画UIViewControllerAnimatedTransitioning对象

    Tips

    已有悬浮球的实现,想添加进去,做成完整的浮窗效果。可以实现FloatingBarManagerType 协议。然后调用下面的方法

    FloatingKeeperManager.shared.floatingBarManager = your floating bar manager
    

    源码

    github源码

    相关文章

      网友评论

          本文标题:Swifty转场动画和侧滑动画,并实现了微信的侧滑浮窗效果

          本文链接:https://www.haomeiwen.com/subject/yjgxvqtx.html