美文网首页
Swift - 全屏添加pop手势

Swift - 全屏添加pop手势

作者: Soullamet | 来源:发表于2017-07-26 14:21 被阅读0次

现在众多APP中都有全屏pop手势
实现这个目前只想到两种方式,如有其他方式请留言告知,相互学习

第一种

根据需求,我们大部分会第一时间想到,在Controller的View中添加手势,然后根据侧滑动作,添加pop当前页面的方法
(但是这种方式实现起来相对麻烦,并且不太好处理)

第二种

根据iOS运行时的特性,把原本左侧边侧滑pop事件,添加到View中,来实现全局pop
(此方式实现较容易,所以选择第二种方式)

具体实现

1.创建自定义UINavigationController
2.获取手势及view

        //获取系统手势
        guard let systemGes = interactivePopGestureRecognizer else {
            return
        }
        //获取手势添加到view中
        guard let gesView = systemGes.view else {
            return
        }

3.获取属性名称

        //获取target/action
        //利用运行时机制获取所有属性名称
        /*
        var count : UInt32 = 0
        let ivars = class_copyIvarList(UIGestureRecognizer.self, &count)!
        for i in 0..<count{
            let ivar = ivars[Int(i)]
            let name = ivar_getName(ivar)
            print(String(cString : name!))
        }
         */

4.根据属性获取target与action

        let targets = systemGes.value(forKey: "_targets") as? [NSObject]
        guard let tagetObjc = targets?.first else {
            return
        }
        print(tagetObjc)
        //取出action
        guard let target = tagetObjc.value(forKey: "target") else {
            return
        }
        let action = Selector(("handleNavigationTransition:"))

其中print(tagetObjc)

(action=handleNavigationTransition:, target=<_UINavigationInteractiveTransition 0x7f92e3f16b20>)

5.创建自己的手势

        let panGes = UIPanGestureRecognizer()
        gesView.addGestureRecognizer(panGes)
        panGes.addTarget(target, action: action)

这样就完成全局的pop手势了

相关文章

  • Swift - 全屏添加pop手势

    现在众多APP中都有全屏pop手势实现这个目前只想到两种方式,如有其他方式请留言告知,相互学习 第一种 根据需求,...

  • swift 全屏pop手势

  • iOS 全屏返回

    iOS 全屏返回 BBGestureBack iOS 全屏手势返回 滑动返回 pop 动画效果 这种手势主流App...

  • iOS 全屏手势返回

    BBGestureBack BBGestureBack iOS 全屏手势返回 滑动返回 pop 动画效果 这种手势...

  • iOS 右滑返回

    BBGestureBack BBGestureBack iOS 全屏手势返回 滑动返回 pop 动画效果 这种手势...

  • BBGestureBack 手势返回

    BBGestureBack BBGestureBack iOS 全屏手势返回 滑动返回 pop 动画效果 这种手势...

  • iOS. 添加全屏Pop手势

    1,思路分析: // 1.获取系统的Pop手势guard let systemGes = interactiveP...

  • iOS 手势返回

    iOS 手势返回 BBGestureBack iOS 全屏手势返回 滑动返回 pop 动画效果 这种手势主流App...

  • Swift OC-全屏Pop手势

    巧用iOS运行时特性,将原本系统中的左侧侧滑pop事件,添加到view中.源码欢迎star和关注。 1、Swift...

  • Swift仿快手、微博拖拽控制器改变大小

    我实现的2.gif 一般默认情况,pop都是从左边缘开始,如果添加全屏pop手势,有点太生硬了,像这种自由拖拽的不...

网友评论

      本文标题:Swift - 全屏添加pop手势

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