本篇博客主要介绍UIScrollView这个在iOS界面开发中非常常用的控件
主要属性
contentSize(滚动范围)
需要设置UIScrollView的contentSize属性才能进行滚动scrollEnabled(是否可以滚动)
默认为YES,决定UIScrollView是否可滚动bounces(弹簧效果)
默认为YES,决定滚动到边缘位置时是否有弹簧效果alwaysBounceHorizontal/alwaysBounceVertical(始终具有弹簧效果)
默认为NO。如果置为YES,即使没有设置contentSize,也能在边缘位置时滚动showsHorizontalScrollIndicator/showsVerticalScrollIndicator(是否显示滚动条)
默认为YESsubviews
取得的子控件数组中除了包含添加进去的控件,还会包含2个自动生成的滚动条的imageView。而且数组中的子控件排列顺序不固定。因此不要通过索引的方式去访问UIScrollView的子控件contentOffset(内容偏移量)
一个CGPoint类型的属性,表示scrollView的原点与contentSize的原点间的差值。用来控制或获取内容的滚动位置contentInset(内边距)
决定无法显示内容的内边距的量。增加额外的滚动范围,但不会改变contentSize的大小
</br>
UIScrollView的代理机制
实现UIScrollView的代理步骤:
- 设置代理对象
为scrollView的delegate属性设置一个代理对象。(任意对象都可以作为代理对象,但通常将scrollView所在的控制器作为代理对象) - 遵守协议
代理对象必须遵守了scrollViewDelegate
协议 - 实现方法
使用scrollViewDidscroll:
方法来监听scrollView的滚动 - 其他方法
-
scorllViewWillBeginDragging:
即将开始拖拽时调用 -
scrollVIewWillEndDragging:withVelocity:targetContentOffset:
即将停止拖拽时调用 -
scorllViewDidEndDragging:willDecelerate:
已经停止拖拽时调用(可以通过decelerate
参数来判断scrollView是否还在滚动) -
scrollViewDidEndDelerating:
已经减速完毕时调用
</br>
UIScrollView中的内容缩放
- 实现代理
- 实现
viewForZoomingInScrollView:
方法,返回需要缩放的子控件 - 设置scrollView的最大和最小缩放比例
</br>
UIScrollView的分页功能
- 开启分页功能
设置scrollView的pagingEnable
属性为YES - 显示分页页码
- 增加一个UIPageControl控件
- 设置控件的numberOfPages属性
- 实现得scrollView的delegate中的方法来改变
currentPage
属性实现显示翻页
</br>
Tips
- UIScrollView的clipsToBounds属性默认为YES,既超出边框的部分会被裁剪掉
- 如果通过代码创建的scrollView,一开始subviews这个数组为nil。通过storyboard创建的则不为空。
- UIScrollView分页的标准为:以scrollView的尺寸为一页。