一、UIScrollView的基本使用
UIScrollView是一个能够滚动的视图控件,可以用来展示大量的内容,并且可以通过滚动查看所有内容。
UIScrollView的用法很简单:1、将需要展示的内容添加到UIScrollView中;2、设置UIScrollView的contentSize属性,告诉UIScrollView所有内容的尺寸,也就是说它的滚动范围。
如果UIScrollView无法滚动,可能是以下原因:
1>没有设置contentSize
2>scrollEnabled = NO;
3>没有接受到触摸事件:userInteractionEnabled = NO
4>没有取消autolayout功能(要想scrollView滚动,必须取消autolayout)
二、UIScrollView的常用代理方法
1、UIScrollView的代理
1>很多时候,我们想在UIScrollView正在滚动或者滚动到某个位置 或 停止滚动时做一些特定的操作
2>要想完成上述功能,前提条件是能够监听UIScrollView的滚动
3>当UIScrollView发生滚动时会自动通知它的代理对象,给它的代理对象发送相应的消息,让它的代理得知它的滚动情况。
4>也就是说,要想监听UIScrollView的滚动过程,就必须给UIScrollView设置一个代理,然后通过代理得知UIScrollView的滚动过程
2、成为UIScrollView的delegate的条件
1>遵守UIScrollViewDelegate协议
2>设置UIScrollView的delegate
两种方式:
2.1> 通过代理
self.scrollView.delegate = self;
2.2>通过stroryboard连线
3> 实现协议中定义的相关方法
三、UIScrollView常见属性
//UIScrollView的滚动位置
@property (nonatomic) CGPoint contentOffset;
//UIScrollView内容的尺寸,滚动范围
@property (nonatomic) CGSize contentSize;
//在四周增加额外的滚动区域
@property (nonatomic) UIEdgeInsets contentInset;
//是否需要弹簧效果
@property (nonatomic) BOOL bounces;
//是否能滚动
@property (nonatomic, getter = isScrollEnabled) BOOL scrollEnabled;
//是否显示水平滚动条
@property (nonatomic) BOOL showHorizontalScrollIndicator;
//是否显示垂直滚动条
@property (nonatomic) BOOL showVerticalScrollIndicator;
四、UIScrollView代理方法
//用户开始拖拽时调用
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView;
//滚动到某个位置时调用
- (void)scrollViewDidScroll:(UIScrollView *)scrollView;
//用户结束拖拽时调用
- (void)scrollViewDidEndDragging:(UIScrollView *) willDecelerate:(BOOL) decelerate;
三、UIScrollView的缩放
UIScrollView不仅能滚动显示大量内容,还能对其内容进行缩放处理。
UIScrollView缩放原理:
1、当用户在UIScrollView身上使用捏合手势时,UIScrollView会给代理发送一条消息,询问代理究竟要缩放自己内部的哪一个子控件(哪一块内容)。
2、然后UIScrollView会调用代理的viewForZoomingInScrollView: 方法,这个方法返回的控件就是需要进行缩放的控件。
缩放实现的具体步骤:
1、设置UIScrollView的”iddelegate” 代理对象
2、设置minimumZoomScale: 缩小的最小比例
3、设置maxmumZoomScale: 放大的最大比例
4、让代理对象实现下面的方法,返回需要缩放的视图控件
- (UIView *) viewForZoomingInScrollView: (UIScrollView *)scrollView;
跟缩放相关的其他代理方法
//缩放完毕的时候调用
- (void)scrollViewWillBeginZooming:(UIScrollView *)scrollViewWithView:(UIView *)view
//正在缩放的时候调用
- (void)scrollViewDidZoom:(UIScrollView *)scrollView;
四、UIScrollView 和 UIPageControl的分页
只要将UIScrollView的pageEnabled属性设置为YES,UIScrollView会被分割成多个独立页面,里面的内容就能进行分页展示
一般会配合UIPageControl 增强分页效果,UIPageControl常用属性如下
//一共有多少页
@property (nonatomic) NSInteger numberOfPages;
//当前显示的页码
@property (nonatomic) NSInteger currentPage;
//只有一页时,是否需要隐藏页码指示器
@property (nonatomic) BOOL hidesForSinglePage;
//其他页码指示器颜色
@property (nonatomic, retain) UIColor *pageIndicatorTintColor;
//当前页码指示器颜色
@property (nonatomic, retain) UIColor *currentPageIndicatorTintColor;
五、NSTimer的使用
作用:1>在指定的时间完成指定的任务‘
2> 每隔一段时间执行特定的任务
调用下面的方法就会开启一个定时器任务
//每隔ti秒调用一次aTarget的aSelector方法,yesOrNo决定了是否重复执行这个任务
+ (NSTimer *)scheduledTimerWithTimeInterval:(NSTimeInterval)ti target:(id)aTarget selector:(SEL)aSelector userInfo:(id)userInfo repeats:(BOOL)yesOrNo;
//停止定时器的工作;一旦定时器停止了,就不能再次执行任务。智能再创建一个新的定时器才能执行新的任务
- (void)invalidate;