闲聊Swift中全屏Pop的实现

2018-08-06  本文已影响110人  听海听心

今天和大家一起来闲聊一下Swift全屏pop的实现,有疏忽的地方,还望各位不吝赐教。


一、全屏Pop的实现方式

二、KVC实现代码

1、先使用RunTime打印系统手势中所有的属性,找到taget和action就好办了。

这里是关于RunTime的介绍和简单实用

var count : UInt32 = 0
let ivars = class_copyIvarList(UIGestureRecognizer.self, &count)!

for i in 0..<count{
      let nameP = ivar_getName(ivars[Int(i)])!
      let name = String.init(cString: nameP)
      log("\(name)")
}

2、通过KVC进行添加手势的操作

override func viewDidLoad() {
        super.viewDidLoad()
        // 判断_targets中是否有值
        guard let targets = interactivePopGestureRecognizer!.value(forKey: "_targets") as? [NSObject]  else {
            return
        }
        // 去除targets中第一个元素,这里大家可以打印一下看一看targets和第一个元素中的数据
        let targetObj = targets[0]
        // 通过KVC拿到target
        let target = targetObj.value(forKey: "target")
        // 通过字典无法拿到action,这里通过Selector方法包装action
        let action = Selector.init(("handleNavigationTransition:"))
        // 创建UIPanGestureRecognizer(平移手势识别器)
        let panGes = UIPanGestureRecognizer.init(target: target, action: action)
        // 将创建的手势加到当前的View上
        view.addGestureRecognizer(panGes)
}
override func pushViewController(_ viewController: UIViewController, animated: Bool) {
        // 必须先隐藏tabBar,再调super 
        viewController.hidesBottomBarWhenPushed = true
        super.pushViewController(viewController, animated: true)
}

写在最后的话:关于Swift全屏pop的实现今天聊到这里,关于使用出现的问题欢迎大家和我交流,共同进步,谢谢各位。

上一篇下一篇

猜你喜欢

热点阅读