一、UIScrollView控件是什么?
(1)移动设备的屏幕⼤大⼩小是极其有限的,因此直接展⽰示在⽤用户眼前的内容也相当有限
(2)当展⽰示的内容较多,超出⼀一个屏幕时,⽤用户可通过滚动⼿手势来查看屏幕以外的内容
(3)普通的UIView不具备滚动功能,不能显⽰示过多的内容
(4)UIScrollView是一个能够滚动的视图控件,可以⽤用来展⽰示⼤大量的内容,并且可以通过滚 动查看所有的内容
(5) 举例:手机上的“设置”、其他⽰示例程序
二、UIScrollView的简单使用
(1)将需要展⽰的内容添加到UIScrollView中
(2)设置UIScrollView的contentSize属性,告诉UIScrollView所有内容的尺⼨寸,也就是告诉 它滚动的范围(能滚多远,滚到哪⾥里是尽头)
注: 本文中所说的"内容视图"在官方文档中称作"content view",表示UIScrollView中可以用来展示内容的部分
三、属性与方法
内容视图相关
// 内容视图的大小,默认为CGSizeZero
@property(nonatomic) CGSize contentSize;
// 为内容视图周围增加可滚动区域,默认为UIEdgeInsetsZero
@property(nonatomic) UIEdgeInsets contentInset;
// 内容视图的原点相对于scrollView的原点的偏移量(左上方向偏移为正数),默认为CGPointZero
@property(nonatomic) CGPoint contentOffset;
// 设置内容视图的原点相对于scrollView的原点的偏移量
- (void)setContentOffset:(CGPoint)contentOffset animated:(BOOL)animated;
滑动相关
// 是否允许滑动,默认为YES
@property(nonatomic,getter=isScrollEnabled) BOOL scrollEnabled;
// 是否只允许同时滑动一个方向,默认为NO,如果设置为YES,用户在水平/竖直方向开始进行滑动,便禁止同时在竖直/水平方向滑动(注: 当用户在对角线方向开始进行滑动,则本次滑动可以同时在任何方向滑动)
@property(nonatomic, getter=isDirectionalLockEnabled) BOOL directionalLockEnabled;
// 是否允许点击状态栏让距离状态栏最近的scrollView滑动到顶部,默认为YES(注: 在iPhone中如果有多个将该属性设置为YES的scrollView,则该方法无效;在iPad中则将距离状态栏最近的scrollView滑动到顶部)
@property(nonatomic) BOOL scrollsToTop;
// 是否按页数进行滑动,默认为NO,如果设置为YES,则在滑动时只会停止在scrollView的bounds的倍数处
@property(nonatomic, getter=isPagingEnabled) BOOL pagingEnabled;
// 是否有触底反弹效果,默认为YES
@property(nonatomic) BOOL bounces;
// 是否总是有触底反弹效果(即使内容视图小于scrollView的大小),默认为NO(注: 生效的前提条件为bounces = YES)
@property(nonatomic) BOOL alwaysBounceHorizontal;
@property(nonatomic) BOOL alwaysBounceVertical;
// 指定用户手指离开屏幕后滑动减速的比率,默认为UIScrollViewDecelerationRateNormal(慢慢停止),其余可选项为UIScrollViewDecelerationRateFast(快速停止)
@property(nonatomic) CGFloat decelerationRate;
// 将指定区域滑动到刚好可见处(即距离边缘最近处)
- (void)scrollRectToVisible:(CGRect)rect animated:(BOOL)animated;










