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行代码搞定全屏侧滑返回

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