iOS UIScrollView 翻页效果

当你需要类似抖音、muse这样的视频软件或者支持动态加载的图片组时,需要支持能够滑动和更新,那么用scrollView很容易做到。

contentSize

首先scrollView的内容和内容面积并无直接关系,scrollView的contentSize只和自己的Bound边界有关。

让contentSize支持拖动出界

只要设置contentSize的拖动方向长度大于显示长度一个像素即可进行来回拖动,并能自动恢复回去

为iOS11进行适配

当拖动contentSize超出边界,在iOS11上表现的并不止一个像素,这时候需要在拖动释放后让contentOffset回滚回CGPointZero。而设置这个动画不能在刚释放完毕时,这时候设置个线程延迟(0延迟即可)就可以避免恢复运动无法执行的问题。(延迟可以让代码在下一周期运行)

设置滚动对象

在scrollView中设置三个显示对象,分别对应a,b,c
他们的大小都是scrollView的bound大小。
当拖动出界时,设置力度超过一定数值(我的设置为0.3)则判断为滚动有效。a,b,c向同一个方向搓动动画,运动结束后,三个对象的变量重新按位置进行调换变量名,比如按照a,b,c的顺序来显示的话,如果向上滑动,则a,b,c都向上滑动,当结束时a设置到初始c的位置,然后将b改为a,c改为b,a挪动到c的位置改为c。这样做的好处是外部调用时主对象永远是b,固定不变。

对滚动优化

此时你会发现当abc同时运动时,有一个根本看不见,上面举的例子就是a,所以可以根据无法显示的原则让其不可见。

设计数据分离

当设计这个翻页效果时,只负责运动和对象显示,其余的数据对应关系,交由设计好的代理接口来应付。也就是把问题简单化。比如一个模块可以处理ui效果,也可以处理数据资源。但单独做一个方面,反而更明确,而且用法也更灵活。

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

推荐阅读更多精彩内容