IOS15全屏滑动返回

全程的用的思想是 Runtime 和 KVC 即 Runtime+KVC
oc的关键性写法:
oc 要加入头文件
#import<objc/runtime.h>
来获取运行循环需要打印的类。都是在父类都是NavigationViewController里面书写代码的

#import "CustomNavigationViewController.h"
#import<objc/runtime.h>
@interface CustomNavigationViewController ()<UIGestureRecognizerDelegate>
@end
@implementation CustomNavigationViewController
- (void)viewDidLoad {[super viewDidLoad];UIGestureRecognizer *gesture =  self.interactivePopGestureRecognizer;UIView *gestureView = gesture.view;gesture.enabled = NO; //禁用系统的侧边滑动unsigned int count = 0;Ivar *var = class_copyIvarList([UIGestureRecognizer class], &count);for(int i = 0;i<count;i++){Ivar _var = *(var+i);//NSLog(@"%s",ivar_getTypeEncoding(_var));//NSLog(@"%s",ivar_getName(_var));}NSMutableArray *_targets = [gesture valueForKey:@"_targets"];NSLog(@"%@",_targets);NSLog(@"%@",_targets[0]);id gestureRecognizerTarget = [_targets firstObject];id navigationInteractiveTransition= [gestureRecognizerTarget valueForKey:@"target"];SEL handleTransition = NSSelectorFromString(@"handleNavigationTransition:");UIPanGestureRecognizer *popRecognizer = [[UIPanGestureRecognizer alloc] initWithTarget:navigationInteractiveTransition action:handleTransition];[gestureView addGestureRecognizer:popRecognizer];}
- (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated{viewController.hidesBottomBarWhenPushed = YES;[super pushViewController:viewController animated:animated];
}
@end

swift写法:

import UIKitclass CustomNavigationController: UINavigationController {override func viewDidLoad() {super.viewDidLoad()guard let systemGes = interactivePopGestureRecognizer else { return }guard let gesView = systemGes.view else { return }/*  var count: UInt32 = 0let ivars = class_copyIvarList(UIGestureRecognizer.self, &count)!for i in 0..<count {let ivar = ivars[Int(i)]let name = ivar_getName(ivar)debugPrint(String(cString: name!))}*/let targets = systemGes.value(forKey: "_targets") as? [NSObject]guard  let targetObjc = targets?.first else { return }debugPrint(targetObjc)debugPrint(targets)guard let target = targetObjc.value(forKey: "target") else { return }
//        guard let action = targetObjc.value(forKey: "action") as? Selector  else { return }let action = Selector(("handleNavigationTransition:"))//4创建自己的手势let panGes = UIPanGestureRecognizer()gesView.addGestureRecognizer(panGes)panGes.addTarget(target, action: action)}override func pushViewController(_ viewController: UIViewController, animated: Bool) {viewController.hidesBottomBarWhenPushed = truesuper.pushViewController(viewController, animated: animated)}
}

当然也有其他写法,或者借助框架等。
https://gitee.com/johnson__save_admin/iosslide-back-swift

https://gitee.com/johnson__save_admin/iosslide-back-oc

IOS15全屏滑动返回相关推荐

  1. 8行代码教你搞定导航控制器全屏滑动返回效果 ————转载

    作者:@吖了个峥 前言 此次文章,讲述的是导航控制器全屏滑动返回效果,而且代码量非常少,10行内搞定. 效果如图: 如果喜欢我的文章,可以关注我,也可以来小码哥,了解下我们的iOS培训课程.陆续还会有 ...

  2. Android Activity 滑动返回。支持微信滑动返回样式、横屏滑动返回、全屏滑动返回

    BGASwipeBackLayout-Android 项目地址:bingoogolapple/BGASwipeBackLayout-Android  简介:Android Activity 滑动返回. ...

  3. 苹果侧边滑动返回_一个丝滑的全屏滑动返回手势

    全屏返回手势 自 iOS7 之后,Apple 增加了屏幕边缘右划返回交互的支持,再配合上 UINavigationController 的交互式动画,pop 到上一级页面的操作变的非常顺畅和丝滑,从此 ...

  4. iOS 一个丝滑的全屏滑动返回手势

    原文链接:http://blog.sunnyxx.com/2015/06/07/fullscreen-pop-gesture/ 全屏返回手势 自 iOS7 之后,Apple 增加了屏幕边缘右划返回交互 ...

  5. iOS 中导航控制器全屏向右滑动返回上一界面

    在iOS中,导航控制器默认就自带了侧滑功能,当用户在界面的左边(左边边缘)滑动的时候,才会有侧滑功能.但是我们往往在开发的过程中需要在屏幕的任意位置滑动,都需要返回到上一个界面. 多说无意,直接看代码 ...

  6. 禁用导航栏的右滑返回实现全屏手势返回

    今天发现项目中push 的也面的右滑都无法pop 查阅相关资料发现 导航栏右滑手势失效基本有两种情况 1: self.navigationController.interactivePopGestur ...

  7. Android自定义View,实现全屏滑动的DrawerLayout

    转载请标明出处:http://blog.csdn.net/weixin_39059543/article/details/73826250 对与DrawerLayout大家应该用过,是Google官方 ...

  8. 基于React的全屏滑动插件react-fullslip

    npm上已有react-fullpage,但是他的实现方式是使用锚点,重新刷新后会出现bug. 因此自己造了一个轮子.欢迎大家使用,star,PR github地址:github.com/dogXgo ...

  9. macbook air扩展显示器全屏滑动怎样不一起滑动?

    macbook air 外接了一个显示器(扩展),当我有多个桌面时,用手指滑动触控板切换桌面时,扩展屏幕也跟着切换桌面 有什么办法能让我在切换主屏幕桌面的时候,扩展屏幕保持不动呢? 上周还好好的,昨晚 ...

最新文章

  1. spark代码中添加logger_Spark的日志配置
  2. 20210903 惯性环节1/(s+1)的各种响应
  3. SAP UI5 intent supported
  4. jdbc工具类2..0
  5. Android JNI编程(五)——C语言的静态内存分配、动态内存分配、动态创建数组...
  6. 怎样与用户有效的沟通以获取用户的真实需求
  7. oracle 12c alert,Oracle 12c DG备库Alert报错ORA-01110
  8. SQL Server事务日志–第2部分–日志性能问题的主要原因
  9. 19.go fix 和 go tool fix
  10. ati开源驱动_ATI Radeon 9800 Vista驱动程序-Flash和Windows视频停止或卡顿
  11. Excel 数据处理基础
  12. CWRU滚动轴承数据集简介
  13. Erueka状态变更说明(十三)
  14. pdf格式的PPT如何保留动画效果?
  15. 计算机硬件和系统重装,重装系统对电脑有什么影响【图文】
  16. ios vue 添加本地音乐_苹果手机vue怎么添加自己的音乐
  17. 奥城大学计算机专业,2013年美国留学硕士双录取院校一览
  18. 给定一种规律 pattern 和一个字符串 str ,判断 str 是否遵循相同的规律。
  19. 推荐一款云服务器免费试用,可以延期再使用
  20. picjumbo - 提供大量高级感、观感极佳的图片素材下载,全都免费商用

热门文章

  1. 武大计算机学院八零后博导张翔,走近名校新生状元 武大张翔:学贵有恒
  2. oracle自动把SID给改了,Oracle SID修改方式的详解
  3. 子节点随父节点高度改变_完全二叉树的子节点数
  4. 在计算机上收回光驱快捷键,如何使用Windows键盘快捷键打开光盘驱动器
  5. python数据接口设计_Python接口与归一化设计
  6. 关于21年电赛,这些一定要熟悉!
  7. 【绝密】泰坦导弹制导计算机内部!
  8. r23中文测试软件,Maxon公布最新的CINEBENCH R23测试软件
  9. traceping是什么意思_trace命令是什么意思?
  10. python计算单词长度_Python - 按长度打印单词