前言
XXPagingScrollView 源于对最美创意的改版重构 由于对现在版本的UI不是太满意 加上想练习一下swift 所以决定用swift来重写最美创意第二版( T_T 因为设计的问题 暂已搁置 跪求惺惺相惜的设计师好基友~~)
界面暂时由我自己来设计 首页的风格我参考了Tinder 所以就有了XXPagingScrollView
分析
通过演示图可以看到 XXPagingScrollView
就是可以自定义paging size的ScrollView 但是UIScrollView仅仅只有一个pagingEnabled
属性 并不能指定paging size 这就是说UIScrollView的paging size大小就是其本身的大小 这是不符合我们的要求的
那么怎样达到我们想要的效果呢?
- 方案1: 不使用pagingEnabled属性 而是手动的计算并设置滑动偏移
- 方案2: 使用pagingEnabled属性 扩大scrollview的显示范围即可(我采用的就是这种方法)
方案1的计算相对麻烦一些 这里不赘述 我们来说说方案2到底是怎么回事
正常来说 我们使用UIScrollView是这样的
当我们滑动时 看到的内容是这样的
但是实际上 我们现在想要看到的内容是这样的
那么 其实我们只要在原来的基础上 扩大UIScrollView的可显示范围就可以了
扩大的显示范围后 我们看到的就是这个样子
而为了达到这个目的 我们只需要把UIScrollView放入到另一个Container里面就可以了
到了这一步 我们就只要解决两个问题
- 让UIScrollView显示超出其本身范围的内容
- 让UIScrollView响应超出其本身范围的触摸事件
而这两个问题其实都容易解决
- clipsToBounds 就是用来干这个事情的
- 重写UIView的pointInside事件就可以了
至此 一个支持自定义paging size的scrollview就产生了
小结
其实根据这个思路写 代码非常的简单(总共不超过100行) 在这里分享只是因为这个解决办法相当的简单且巧妙(思路是google得来的) 且不对UIScrollView本身造成任何破坏
最近感觉国内的iOS圈造轮子的情绪相当的高涨 但是其实可以换一种思路来解决问题