iOS 开发之使用 ScrollView 实现自定义滚动距离(半屏分页滑动)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了iOS 开发之使用 ScrollView 实现自定义滚动距离(半屏分页滑动)相关的知识,希望对你有一定的参考价值。

参考技术A 遇到这样一个需求,半屏分页滚动轮播图,每次滑动一个 cell 的宽度

原理:创建一个和你 scrollView,让它的宽等于你需要分页的宽,为了让旁边的页显示出来,我们设置它的属性:
self.scrollView.layer.masksToBounds = NO;
self.scrollView.pagingEnabled = YES;
这样我们就可以得到自定义距离的分页滑动了

但是可滑动区域只在中间部分,我们增大它的滑动区域

demo地址:
https://github.com/xiaoxiaoxiaoxuan/CustomPageScroll

iOS scrollView自动布局技巧之二 - 纯代码自动布局

参考技术A

目录:

注意:
- 不管以上那种情况,scrollView 本身的大小和位置一定要相对固定!
- 可以使用frame直接设置,也可以使用自动布局设置。

根据排列组合,共有 2*2 = 4 中情况,下面分别分析:

这种情况没什么好说的,直接设置即可。

这种情况相当于是第四种情况的简化版,故请先看[第四种方式]。

我们知道,只要设置 scrollView 的 contentSize,就限定了 scrollView 的可滚动范围。所以这种情况,并不能很好的根据子控件的变化而动态显示完整的内容。

所以子控件bounds变化的情况,需要使用[第四种方式]设置。

首先来做个分析:

第1条,两种设置方式,自己根据实际情况选择一种即可;

第2条,将所有子视图塞进一个容器视图中。即先给scrollView添加一个 唯一直接子视图

通俗点说就是创建一个 sizeView 设置其大小(直接设置frame或者使用autolayout设置皆可),然后将其添加到scrollView的子视图,其他七七八八的所有小子视图都添加在这个直接子视图 sizeView 中,这个直接子视图就相当于 contentView。
这样只要设置这个直接子视图 sizeView 的大小和约束就好了。

如果设置好了这个直接子视图 sizeView 的约束,那么这个直接子视图 sizeView 的范围就是 scrollView 的滚动范围喽!

第3条,其实设置子视图布局就2个要点:

如图1、图2
图2为竖直、水平方向皆可滚动,注意观察滚动条位置。

图2为竖直、水平方向皆可滚动,注意观察滚动条位置。

如此设置布局是不是很方便呢?

以上是关于iOS 开发之使用 ScrollView 实现自定义滚动距离(半屏分页滑动)的主要内容,如果未能解决你的问题,请参考以下文章

AndroidAndroid开发实现带有反弹效果,仿IOS反弹scrollview详解教程

ios开发之--仿(微信)自定义表情键盘

iOS开发UIScrollView的底层实现

AndroidAndroid开发实现带有反弹效果,仿IOS反弹scrollview详解教程

Android在开发中的使用技巧之解决ScrollView嵌套RecyclerView出现的系列问题

ios开发之 -- 自动轮播图创建