开源项目:XXPagingScrollView

前言


XXPagingScrollView 源于对最美创意的改版重构 由于对现在版本的UI不是太满意 加上想练习一下swift 所以决定用swift来重写最美创意第二版( T_T 因为设计的问题 暂已搁置 跪求惺惺相惜的设计师好基友~~)

界面暂时由我自己来设计 首页的风格我参考了Tinder 所以就有了XXPagingScrollView

分析


XXPagingScrollView

通过演示图可以看到 XXPagingScrollView 就是可以自定义paging size的ScrollView 但是UIScrollView仅仅只有一个pagingEnabled属性 并不能指定paging size 这就是说UIScrollView的paging size大小就是其本身的大小 这是不符合我们的要求的

那么怎样达到我们想要的效果呢?

  • 方案1: 不使用pagingEnabled属性 而是手动的计算并设置滑动偏移
  • 方案2: 使用pagingEnabled属性 扩大scrollview的显示范围即可(我采用的就是这种方法)

方案1的计算相对麻烦一些 这里不赘述 我们来说说方案2到底是怎么回事

正常来说 我们使用UIScrollView是这样的

当我们滑动时 看到的内容是这样的

但是实际上 我们现在想要看到的内容是这样的

那么 其实我们只要在原来的基础上 扩大UIScrollView的可显示范围就可以了

扩大的显示范围后 我们看到的就是这个样子

而为了达到这个目的 我们只需要把UIScrollView放入到另一个Container里面就可以了

到了这一步 我们就只要解决两个问题

  1. 让UIScrollView显示超出其本身范围的内容
  2. 让UIScrollView响应超出其本身范围的触摸事件

而这两个问题其实都容易解决

  1. clipsToBounds 就是用来干这个事情的
  2. 重写UIView的pointInside事件就可以了

至此 一个支持自定义paging size的scrollview就产生了

小结


其实根据这个思路写 代码非常的简单(总共不超过100行) 在这里分享只是因为这个解决办法相当的简单且巧妙(思路是google得来的) 且不对UIScrollView本身造成任何破坏

最近感觉国内的iOS圈造轮子的情绪相当的高涨 但是其实可以换一种思路来解决问题