• UIScrollView滚动视图

移动设备的屏幕大小是极其有限的,因此直接展示在用户眼前的内容也相当有限

UIScrollView是一个能够滚动的视图控件,可以用来展示大量的内容,并且可以通过滚动查看所有的内容

如:

     手机的设置页面、照片浏览中放大缩小页面、app上的广告栏等


基本使用过程:

     1)创建UIScrollView对象并设置其frame

     2)将要展示的内容添加到UIScrollView中

     3)设置UIScrollView的contentSize属性以确定可展示的视图范围

     (能滚多远,滚到哪里是尽头)


无法滚动的解决办法:

     没有设置contentSize

     scrollEnabled = NO

     没有接收到触摸事件:userInteractionEnabled = NO

     没有取消autolayout功能(要想scrollView滚动,必须取消autolayout)

     … …


  • UIScrollView的几个重要属性

frame:我们所看到的frame,以父视图左上定点作为坐标原点

contentSize:scrollView内部的可展示的范围,是一个CGSize类型

@property(nonatomic) CGSize contentSize
- (void)setContentOffset:(CGPoint)contentOffset animated:(BOOL)animated

contentOffSet:当前的滚动位置,是一个CGPoint类型

@property(nonatomic) CGPoint contentOffset

contentInset:内边距

@property(nonatomic) UIEdgeInsets contentInset

     

其他属性:

@property(nonatomic, getter=isScrollEnabled) BOOL scrollEnabled     //滚动功能使能
@property(nonatomic) BOOL scrollsToTop  //点击状态栏回滚到顶部功能的使能
@property(nonatomic) BOOL bounces //弹簧功能使能
@property(nonatomic) BOOL showsHorizontalScrollIndicator //水平滚动条显示使能
@property(nonatomic) BOOL showsVerticalScrollIndicator  //垂直滚动条显示使能



  • 滚动视图的代理

UIScrollView对象有一个代理属性:

@property(nonatomic, assign) id< UIScrollViewDelegate > delegate

代理者需要遵循代理协议<UIScrollViewDelegate>

检测滚动位置的代理方法:

- (void)scrollViewDidScroll:(UIScrollView *)scrollView
- (void)scrollViewDidScrollToTop:(UIScrollView *)scrollView

检测拖拽的代理方法:

- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView
- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate


如何实现缩放?

     由于scrollView中可以放置多个子视图

     故当使用缩放手势时,scrollView通过代理方法询问代理者应当缩放哪个子视图

- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView

     实现该方法,返回要缩放的子视图


检测缩放的代理方法:

- (void)scrollViewDidZoom:(UIScrollView *)scrollView
- (void)scrollViewWillBeginZooming:(UIScrollView *)scrollView withView:(UIView*)view
- (void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(UIView*)view atScale:(CGFloat)scale


 

  • 滚动视图的分页功能

滚动视图支持分页效果的滚动功能

相关属性:

@property(nonatomic, getter=isPagingEnabled) BOOL pagingEnabled //分页效果使能

使用的一般步骤:     

     1)设置页数,contentSize的width为frame的width的页数倍

     2)向scrollView中放置每一页应显示的内容

     wKioL1bU-GyBqeJKAABeynfJYuc657.png

     3)分页效果属性设置为YES

     4)必要时隐藏滚动条

     5)必要时使用UIPageControl来显示当前是第几页