iOS开发资料收集区Objective C开发牛叉的demo

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

2016-08-16  本文已影响237人  liangdahong

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

上一篇下一篇

猜你喜欢

热点阅读