0行代码搞定全屏侧滑返回

作者: liangdahong | 来源:发表于2016-08-16 17:33 被阅读237次

0行代码搞定全屏侧滑返回

前段时间想弄全屏侧滑返回效果,此效果可能还是比较常用,最后在Github上看到FDFullscreenPopGesture,是在博文 的基础上扩展。仔细看了一下分析问题的思路,受益匪浅。可以看看博文的思路。

效果图:

效果图

实现代码如下:

全屏侧滑返回代码实现

7句代码即实现了神奇的功能,哈哈。

下面进入主题,说一下我遇到的一个坑(可能是我自己的经验不足,但还是分享一下下)

看上面的代码是下导航控制器里面写的,想一下,如果项目中有许多的导航控制器那么岂不是要写许多的这样的代码,是否可以在一个地方配置一下就好了呢?肯定想到了 runtime来实现,必须的嘛!

思路是使用runtime对导航控制器进行操作。

代码如下:(此实现是错误的,会崩溃(⊙o⊙)哦)

第一次错误实现

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[BMViewController bm_viewDidLoad]: unrecognized selector sent to instance 0x7fa64bc1c920'

找不到 BMViewController  对象找不到 bm_viewDidLoad 方法!

代码中的问题是: UINavigationController的viewDidLoad 和  UINavigationController在次分类的 bm_viewDidLoad 交换,实际上 UINavigationController 的 viewDidLoad 方法是在UIViewController继承过来的,此处交换以后,UIViewController在调viewDidLoad时调到bm_viewDidLoad,但是UIViewController没有bm_viewDidLoad方法,所以崩溃。

参考1.http://blog.leichunfeng.com/blog/2015/06/14/objective-c-method-swizzling-best-practice/ 

修改后的oc代码:

正确代码实现

正确代码实现

swift代码

swift代码

oc&swift传送门github

相关文章

  • 0行代码搞定全屏侧滑返回

    0行代码搞定全屏侧滑返回 前段时间想弄全屏侧滑返回效果,此效果可能还是比较常用,最后在Github上看到FDFul...

  • iOS 实现Navigation导航控制器全屏侧滑返回效果并监听

    关于全屏侧滑的效果可以参考《8行代码教你搞定导航控制器全屏滑动返回效果》上面说的很详细,我实现的监听侧滑偏移量就是...

  • ios 滑动返回的解决方案

    三种方法:方法1:系统自带的侧滑返回方法 2【8行代码教你搞定导航控制器全屏滑动返回效果】 |那些人追的干货 3:...

  • 全屏侧滑返回

    手势lazy var pag: UIPanGestureRecognizer = { let target ...

  • iOS全屏侧滑返回

    1、使用FDFulleFDFullscreenPopGesture 导入项目即可 2、自定义返回手势取代系统侧滑返...

  • iOS 侧滑返回

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

  • iOS 侧滑返回详解

    iOS 侧滑返回详解 BBGestureBack iOS 全屏手势返回 滑动返回 pop 动画效果 这种手势主流A...

  • iOS 侧滑返回详解

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

  • iOS全屏返回处理

    8行代码搞定导航控制器全屏滑动返回效果

  • Android 侧滑只需一步

    先解释一下这个标题,说的是实现App侧滑返回功能只需要一行代码就能搞定,怎么做到的我待会会说。侧滑所指的就是侧滑返...

网友评论

    本文标题:0行代码搞定全屏侧滑返回

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