在我们app中,UIScrollView几乎贯穿我们整个项目业务,为什么这么说,我们来看UITableview,UICollectionView,UITextView等都是继承UIScrollView的,而这些控件使用频率之高,想大家都知道,所以知道UIScrollView的底层实现还是有必要的。扎实的基础就像楼盘的地基,地基越稳就可以越高。
1、UIScrollView滑动技能,是不是感觉有点神奇,居然能滑动,马上揭开他滑动的底层实现。
首先我们来查找UIScrollView能滑动的来源,他继承UIView,所以不是来自父类,那么我们来看系统文件
发现有一个panGestureRecognize滑动手势,我们来做一把测试,把这个手势移除
结果scrollView失去了滑动的效果,我们找到了答案,滑动原来是panGestureRecognize来实现的。
2、那么滑动过程中子视图一起移动的效果是怎么做到的呢,其实很简单:
首先我们必须知道UIView的frame和bounds的作用
frame是相对父视图坐标系来决定自己的位置和大小,在开发过程中会经常用到,不多解释。
但bounds是相对于自身坐标系的位置和尺寸的,什么意思呢,我们去修改视图bounds的origin试试,我们发现视图本身没有发生变化,但是它的子视图的位置却发生了变化,因为bounds的origin值是基于自身的坐标系,当自身坐标系的位置被改变了,里面的子视图肯定得变化,bounds和panGestureRecognize就是实现UIScrollView滑动效果的关键技术点。
3、我们了解原理,那么我们自己来实现一个UIScrollView,撸上代码,一切尽在代码中
看完是不是发现UIScrollView的滑动原理很简单!是的,就这么简单!