最近在做的项目要做到在同一个UIScrollView里面给不同的label或者UITextView分层。
分层的话,一开始的想法是用多个UIScrollView来做分层,之后设置不同的滚动速度和通过代理来实现同时滚动就可以了。
但是结果是有问题的,因为每一次滚动的时候会调用delegate的DidScroll方法,这时候就会有一点延迟,多个ScrollView就不会一起滚动,而是在一个滚动的时候,过一会会有几个跟着来滚动,效果不是太好。
之后上网找了很多的例子,终于做到了分层滚动的效果,其实是用了别人的控件。。。在这里先标明例子的出处:http://code4app.com/ios/SWParallaxScrollView/53254e0d933bf0a63d8b4977 是非常容易使用的分层UIScrollView。
这里简单说一下使用方法
1. 给配置上环境。
就是下过来,拖过去,而且没有用到别的什么框架,比较好用,但是本楼主是直接用的cocoapods来导入的,在github上就有。如果是想再项目中用到的请注意,因为是用到了 c++写的,记得改.m为.mm,可能还要去配置一下buildPhases。
2. 导入使用
具体就是一个类,2个文件:SWParallaxScrollView.h和SWParallaxScrollView.mm
在导入完了之后把SWParallaxScrollView当做UIScrollView来使用:
self.scrollview = [[SWParallaxScrollView alloc] initWithFrame:self.view.bounds];
self.scrollview.contentSize = CGSizeMake(960, 480);
但是在把view加入到ScrollView中去的时候用下面的方法
[self.scrollview addSubview:self.textView onLayer:1];
这样layer比较大的会在上面,而且移动的速度会更快,但是因为底层还是通过位移来做出视差滚动的效果,所以就要做frame的调整
下面给出效果图