一、UIScrollView 概述

1.用途

UIScrollView主要用于显示比应用程序窗口大的视图内容,用户可以通过使用手势滚动查看内容或者通过手势放大和缩小视图内容等。

2.继承关系

NSObject -> UIResponder -> UIView ->UIScrollView

二、常用的属性

1.contentSize

contentSize为scorllView可滑动视图的大小;

2.contentOffset

contentOffset为scorllView当前滑动视图的位置相对应原始位置的偏移量;

3.contentInset

contentInset是scrollview的contentview的顶点相对于scrollview的位置,例如你的scrollView.contentInset = UIEdgeInsetsMake(20, 0, 0, 0);那么你的contentview就是从scrollview的(0 ,20)开始显示。

4.scrollEnabled

scrollEnabled为布尔值,值为YES时,scrollView可以滑动;值为NO时,scrollView不可滑动;默认值为YES。当scrollView滑动的属性被禁用时,与滑动相关的一些方法都会失效。

5.directionalLockEnable

directionalLockEnable为布尔类型,主要作用是锁定scrollView在一个方向滑动。值为YES时,用户在一个方向(水平或垂直)滑动时,滚动视图禁止在其他方向滚动。也就是说,如果值为YES时,你在水平方向滑动,垂直方向就不会滚动;你在垂直方向滑动,水平方向就不会滚动,只能在一个方向进行滑动。如果你滑动的方向是对角线的方向,那滚动视图就不会被锁定,可以任意滚动。当值为NO时,可以任意方向滚动。默认值为NO。

6.scrollsToTop

scrollsToTop为布尔类型,主要作用是当用户点击状态栏,scrollView回到顶部。

7.pagingEnable

pagingEnable为布尔类型,设置scrollView是否整页翻动;默认值为NO。

8.bounces

bounces为布尔类型,设置scrollView的弹簧效果,默认值为YES。

9.alwaysBounceVertical

alwaysBounceVertical为布尔类型,设置scrollView水平方向遇到边框是否反弹。

10.alwaysBounceHorizontal

alwaysBounceHorizontal为布尔类型,设置scrollView垂直方向遇到边框是否反弹。

11.canCancelContentTouches

canCancelContentTouches为布尔类型,设置scrollView是否接触touch的事件。

12.delayContentTouches

delayContentTouches为布尔类型,设置scrollView是否延时调用开始滚动的方法。

13.decelerationRate

decelerationRate为float类型,改变scrollView的减速点位置。

14.dragging

dragging为布尔类型,监控当前目标是否正在被拖拽。

15.tracking

tracking为布尔类型,监控当前目标是否正在被跟踪。

16.decelerating

decelerating为布尔类型,监控当前目标是否正在减速。

17.indicatorStyle

indicatorStyle为枚举类型,设置滚动条的样式。

18.scrollIndicatorInsets

scrollIndicatorInsets指定滚动条在scrollerView中的位置。

19.showsHorizontalScrollIndicator

showsHorizontalScrollIndicator为布尔类型,设置scrollView是否显示水平方向的滚动条。

20.showsVerticalScrollIndicator

showsVerticalScrollIndicator为布尔类型,设置scrollView是否显示垂直方向的滚动条。

21.panGestureRecognizer

panGestureRecognizer按下手势。

22.zoomScale

zoomScale为float类型,设置放大的比例。

23.maximunZoomScale

maximunZoomScale为float类型,设置放大的最大倍数。

24.minimunZoomScale

minimunZoomScale为float类型,设置缩小的最小的倍数。

25.zoomBouncing

zoomBouncing为布尔类型,判断是否正在进行缩放反弹。

26.zooming

zooming为布尔类型,判断scrollView是否正在进行缩放。

27.bouncesZoom

bouncesZoom为布尔类型,判断scrollView缩放时是否会进行反弹。

28.delegate

delegate设置scrollView的委托协议。

29.keyboardDismissMode

keyboardDismissMode为枚举类型,设置scrollView滑动隐藏键盘的方式。

30.UIScrollViewIndicatorStyle

UIScrollViewIndicatorStyle为枚举类型,设置indicator的样式。

31.Deceleration Constants

deceleration constants 减速常数。

三、常用的一些方法

1. setContentOffset 方法

- (void)setContentOffset:(CGPoint)contentOffset animated:(BOOL)animated
//此方法的功能是设置scrollView滑动到你所制指定的区域。

contentOffset是CGPoint类型,此参数的作用是设置你所想要scrollView滑动到的位置,默认值为CGPointZero。
animated是BOOL类型,值为YES时,有一个动画延迟的效果;值为NO时,无动画延迟效果。
具体的用法如:

[self.scroview setContentOffset:CGPointMake(0, 100) animated:YES];

2. scrollRectToVisble:animated: 方法

- (void)scrollRectToVisible:(CGRect)rect animated:(BOOL)animated
//此方法的作用是使rect区域的视图可见。
//意思就是说如果scrollView.contentsize如果为(1000,200),但是你scrollRectToVisible中的rect设置为(500,0,500,200)那就说scrollView可见的部分是rect部分的视图,也就scrollView.contentsize的前半部分被隐藏了,后半部分才能显示出来。

3. - touchesShouldBegin:withEvent:inContentView: 方法

- (BOOL)touchesShouldBegin:(NSSet<UITouch *> *)touches 
                 withEvent:(UIEvent *)event
             inContentView:(UIView *)view
 //父视图是否可以将消息传递给子视图,yes是将事件传递给子视图,则不滚动,no是不传递则继续滚动

4. - touchesShouldCancelInContentView: 方法

- (BOOL)touchesShouldCancelInContentView:(UIView *)view
//Yes是子视图取消继续接受touch消息(可以滚动),NO是子视图可以继续接受touch事件(不滚动)
//默认的情况下当view不是一个UIControlo类的时候,值是yes,否则是no 
//调用情况是这样的一般是在发送tracking messages消息后会调用这个函数,来判断scroll是否滚动,还是接     受子视图的touch事件

5. - zoomToRect:animated: 方法

- (void)zoomToRect:(CGRect)rect animated:(BOOL)animated
//这种方法调整的zoomScale进行必要的缩放以便使内容视图成为由矩形定义的区域

6. - setZoomScale:animated: 方法

- (void)setZoomScale:(CGFloat)scale animated:(BOOL)animated
//缩小到特定区域的内容,所以它是在接收器中可见