[swift] 开源项目:XXPagingScrollView(重写最美创意第二版)

[复制链接]
查看779 | 回复0 | 2015-7-12 10:27:43 | 显示全部楼层 |阅读模式
前言
) P3 i; S% V0 F) c  XXPagingScrollView 源于对最美创意的改版重构 由于对现在版本的UI不是太满意 加上想练习一下swift 所以决定用swift来重写最美创意第二版( T_T 因为设计的问题 暂已搁置 跪求惺惺相惜的设计师好基友~~)! |( a3 X- p7 S9 p
  界面暂时由我自己来设计 首页的风格我参考了Tinder 所以就有了XXPagingScrollView
' w+ P; K* r+ p- m' ~  分析3 q2 l" s8 i. A( U4 S
   1436158325390389.gif - ]4 _$ U) l' d- Y; B9 S0 r
  XXPagingScrollView- L. D" ~0 o" X5 h
  通过演示图可以看到 XXPagingScrollView 就是可以自定义paging size的ScrollView 但是UIScrollView仅仅只有一个pagingEnabled属性 并不能指定paging size 这就是说UIScrollView的paging size大小就是其本身的大小 这是不符合我们的要求的
& s$ K/ O! V5 p* q- o  那么怎样达到我们想要的效果呢?) n  \& W7 U' G6 [4 L. Y! N

+ }: |; |1 _  @9 }: V  方案1: 不使用pagingEnabled属性 而是手动的计算并设置滑动偏移
0 k  n% C& A1 g
) W6 @# t3 w5 }& l) s% n  方案2: 使用pagingEnabled属性 扩大scrollview的显示范围即可(我采用的就是这种方法)- A0 V( M1 o3 ]
  方案1的计算相对麻烦一些 这里不赘述 我们来说说方案2到底是怎么回事0 V5 M( V2 }& [( K. h
  正常来说 我们使用UIScrollView是这样的6 H+ z9 }2 x' ?' I# Z1 W* x
   1436163041368785.png
  j2 q5 S+ n" x. a9 ^( w1 V8 n  当我们滑动时 看到的内容是这样的
( Q( A4 R5 i+ l6 g
3 V. E  S  |4 X: j8 I2 l! G' o   1436163056621635.png
2 j; b7 t2 ]0 X4 j) b  但是实际上 我们现在想要看到的内容是这样的
% H$ z/ D: }. j/ e
$ m7 [4 t/ \" M   1436163061959014.png + S. N; }8 Z  [
  那么 其实我们只要在原来的基础上 扩大UIScrollView的可显示范围就可以了
4 A9 P% a$ t! W0 Q, X
" S: i$ a! f' @3 b# z   1436163074115913.png
- z9 i  Y, ]% j: z$ K% X/ `  扩大的显示范围后 我们看到的就是这个样子! h3 ^) b0 M6 [, P, ^
# z- [* Q; d4 M0 U/ F$ F; ?
   1436163086784404.png
5 T; L3 @  ~6 _7 ^# K* g  而为了达到这个目的 我们只需要把UIScrollView放入到另一个Container里面就可以了; p, n* e' x9 g- g( ^' U: s

1 D; W; R" o3 h   1436163098462542.png
* X, m9 Q+ b5 k5 ]- H  到了这一步 我们就只要解决两个问题* }3 D* [, |. e% D$ g

; w3 F+ L9 M$ v' a3 @4 r3 t) X2 h8 }5 g
  让UIScrollView显示超出其本身范围的内容
: [5 [$ O0 R8 u! V6 g
+ k3 V( N6 Y: Q2 \$ {  让UIScrollView响应超出其本身范围的触摸事件9 U: r5 C2 W! M! M
  而这两个问题其实都容易解决0 ^8 L( J- |- W% _

6 O% v3 `- W% M9 ?$ D  clipsToBounds 就是用来干这个事情的" E/ ?5 ~. q. p3 ?8 C3 j# g! X9 ]# f

) P1 a' X+ {$ a0 `  重写UIView的pointInside事件就可以了
6 J* N( _# _% m* q) [  至此 一个支持自定义paging size的scrollview就产生了8 b4 h9 G% a1 p8 K% i
  [color=rgb(0,]小结
. ]0 T# a( e. p  其实根据这个思路写 代码非常的简单(总共不超过100行) 在这里分享只是因为这个解决办法相当的简单且巧妙(思路是google得来的) 且不对UIScrollView本身造成任何破坏! ?" Q2 H* t0 [8 i$ D0 ^
  最近感觉国内的iOS圈造轮子的情绪相当的高涨 但是其实可以换一种思路来解决问题
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则