iOS开发之改变navigationController push 的方向(由一个变态需求引出)

96
WangK_Dev
2017.07.24 21:02* 字数 949

今天遇到个棘手的问题,记录下解决方案,(记录时间2017.07.24,下面提到的效果,有可能随着改版换掉。。。。)


因为项目中有需要用到WMPageController这个第三方框架来解决类似网银新闻那样的滑动切换问题,这个框架使用非常方便,功能也很强大(在这里推荐一下这个框架,真的 很好用,一般的需求都能满足,除非很变态的像我今天遇到的这样的)。关于这个框架的使用,非常的简单,下载个呆哞看下就行,坐着写的很详细,网上也有很多了,等这两天我整理下项目中用到的,再写出来一篇文章供大家参考,好东西一定要分享。

我们的需求

我们的需求是类似之前淘宝的详情那样,上滑看下一页的详情(现在不是这个效果了)。上面那一页是个一般的VC,很正常,上滑后那一页就变态了,还要左右滑动切换,我用WMPageController这个框架来做了,按照之前其他地方的模式,各种属性都设置好了之后,发现,出了个很严重的问题。,类似这样的。


效果

结构是这样的:


结构

事实上我三个控制器设置的背景色都不一样,只显示出来了第一个,往右滑动显示的白色并不是的,看上面的标题就能看出来。滑动是失效的,并且点击上面的按钮也不起作用,我排查了下 框架用的没问题,我估计是因为我放在了ScrollView上面的原因,因为这个框架底层应该也是ScrollView,瞬间懵逼,赶紧去git上发了issue。可能作者设计这套框架的时候没在这个上面试过吧,但是还得做出来啊,暂时没有好的解决办法,于是跟UI 商量了下,改了下,让页面上滑的时候,push到一个新的控制器(下页的控制器),而不是在ScrollView上了,这样的话框架没有在ScrollView上就能正常使用了。改变后的效果是这样的:


改变后效果

思路

我当时的思路是上滑的时候push一个新的控制器,这样是肯定行的,但是问题就是push的方向有点蛋疼,一般的push吧,跳的痕迹太明显,取消跳转动画太突兀,于是我想 如果让push方向从下往上就好点了。

解决方法是这位大湿的,我试了下,很好用。


导入

import <QuartzCore/QuartzCore.h>

在Build Phases里面加入QuartzCore.framework这个库。

        CATransition* transition = [CATransition animation];
        transition.type = kCATransitionPush;//可更改为其他方式
        transition.subtype = kCATransitionFromTop;//可更改为其他方式
        [self.navigationController.view.layer addAnimation:transition forKey:kCATransition];
        
        [self.navigationController pushViewController:secondVC animated:NO];

仍然存在的问题

点返回的时候,还是之前的返回动画,这个地方如果改成从上到下的回去就更加完美了。如果哪位大神知道如何改的话,请不吝赐教!!!


这个效果在很多APP上都有,例如 祺天优贷、团贷网 这些APP。团贷网是完全符合需求的做饭,但他下面的是webView,这种方式也能实现,之前版本就是这样,现在要用原生写,就很尴尬了。还有就是祺天优贷这个APP,详情里面的方式跟我现在的方式是一样的。


急着下班回家,文笔不好请多多包涵。

iOS学习经验
Web note ad 1