UIScrollView
- 概念:
UIScrollView
是一个能够滚动的视图控件,可以用来展示大量的内容,并且可以通过滚动查看所有的内容; - 特点:
- 超出UIScrollView自身尺寸的内容会自动隐藏;
- 用户可以通过手势拖动来查看超出边框(隐藏)的内容;
一、UIScrollView的使用步骤:
- 1.将需要展示的内容添加到UIScrollView中(一般内容的尺寸都比UIScrollView本身的尺寸大,可以通过滚动来展示);
- 2.设置UIScrollView的
contentSize
属性,也就是告诉UIScrollView他可以滚动的范围;
二、UIScrollView常见属性:
1.contentSize:表示UIScrollView内容的尺寸,滚动范围(能滚多远)
@property(nonatomic) CGPoint contentSize;
2.contentOffset:表示UIScrollView滚动的位置(内容左上角与scrollView左上角的间距值)
@property(nonatomic) CGPoint contentOffset;
3.contentInset:表示能够在UIScrollView的4周增加额外的滚动区域,一般用来避免scrollView的内容被其他控件挡住
@property(nonatomic) UIEdgeInsets contentInset; // 属性定义(官方文档) self.scrollView.contentInset = UIEdgeInsetsMake(64, 0, 0, 0); // 设置contentInset,按逆时针方向从上开始
三、UIScrollView其他属性:
1.bounces:设置UIScrollView是否需要弹簧效果
@property(nonatomic) BOOL bounces;
2.scrollEnabled:设置UIScrollView是否能滚动
@property(nonatomic,getter=isScrollEnabled) BOOL scrollEnabled;
3.showsHorizontalScrollIndicator:是否显示水平滚动条
@property(nonatomic) BOOL showsHorizontalScrollIndicator;
4.showsVerticalScrollIndicator:是否显示垂直滚动条
@property(nonatomic) BOOL showsVerticalScrollIndicator;
四、UIScrollView的代理(delegate):
- 当UIScrollView发生一系列的滚动操作时,会自动通知它的代理(delegate)对象,给它的代理发送相应的消息,让代理得知它的滚动情况后执行相应的动作
- 要想成为UIScrollView的delegate,是有条件的,代理对象需遵守协议,并且实现协议中对应的方法才能监听UIScrollView的滚动过程
协议中的方法:
1.用户开始拖拽时调用
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView;
2.滚动到某个位置时调用
- (void)scrollViewDidScroll:(UIScrollView *)scrollView;
3.用户结束拖拽时调用
- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate;
五、UIScrollView和控制器:
- 一般情况下,就设置UIScrollView所在的控制器为 UIScrollView的delegate;
设置控制器为UIScrollView的delegate有2种方法:
1.通过
代码
:(self就是控制器)self.scrollView.delegate = self;
- 2.通过
脱线
的方式:右击UIScrollView选择delegate脱线到控制器;
- 控制器应该遵守
UIScrollViewDelegate
协议 - 实现协议中定义的相关方法
六、UIScrollView的缩放
- 缩放原理:
- 当用户在UIScrollView身上使用捏合手势时,UIScrollView会给代理发送一条消息,询问代理究竟要缩放自己内部的哪一个子控件(哪一块内容)
- 当用户在UIScrollView身上使用捏合手势时,UIScrollView会调用代理的
viewForZoomingInScrollView:
方法,这个方法返回的控件就是需要进行缩放的控件
实现缩放的步骤
- 1.设置UIScrollView的代理对象,(一般情况下,就设置UIScrollView所在的控制器为 UIScrollView的delegate)
- 2.设置缩小的最小比例
minimumZoomScale
- 3.设置放大的最大比例
maximumZoomScale
4.让代理对象实现下面的方法,返回需要缩放的视图控件
-(UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView;
与缩放相关的其他代理方法
1.正在缩放的时候调用
- (void)scrollViewWillBeginZooming:(UIScrollView *)scrollView withView:(UIView *)view;
- 2.缩放完毕的时候调用
- (void)scrollViewDidZoom:(UIScrollView *)scrollView