UIScrollView的视差滚动实现

最近在做的项目要做到在同一个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的调整

下面给出效果图

             

猜你喜欢

转载自blog.csdn.net/u1031/article/details/42872121