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

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,284评论 4 61
  • 受父辈手艺人到哪也不会饿死的影响,上大学时我选择的是工科院校。学法律只是纯粹的个人爱好。 初学法律,甚是喜欢法律人...
    浩哥随思录阅读 238评论 2 0
  • 当你遇到困难和烦恼,经常向他求助和吐槽的那个人,(包括父母,很要好的朋友,同学,闺蜜,基友老师等)他们被自己身边的...
    囚徒JK阅读 344评论 0 1
  • 最近生活朦朦胧胧的,确切的说是迷迷糊糊,都不知道时间是怎么过去,紧接着新的一天就到了。 昨晚susan老师又打电话...
    丝小瓜阅读 250评论 -3 1
  • 天气有好有坏
    1f0ddef73734阅读 159评论 0 1