码迷,mamicode.com
首页 > 移动开发 > 详细

iOS----UIScrollView

时间:2015-05-05 21:17:15      阅读:146      评论:0      收藏:0      [点我收藏+]

标签:

UIScrollView
什么是UIScrollView
  • 移动设备的屏幕大小是极其有限的,因此直接展示在用户眼前的内容也是相当有限
  • 当展示的内容较多,超出一个屏幕时,用户可通过滚动手势来查看屏幕以外的内容
  • 普通的UIView不具备滚动功能,不能显示过多的内容
  • UIScrollView是一个能够滚动的视图控件,可以用来展示大量的内容,并且可以通过滚动查看所有的内容
 
UIScrollView的基本使用
UIScrollView的用法很简单:将需要展示的内容添加到UIScrollView中,并且设置UIScrollView的contentSize属性,告诉UIScrollView所有的内容的尺寸,也就是告诉它滚动的范围
 
UIScrollView的代理(delegate)
  • 很多时候,我们想在UIScrollView正在滚动或滚动到某个位置或者停止滚动时做一些特定的操作
  • 要想完成上述功能,前提条件就是能够监听到UIScrollView的整个滚动过程
  • 当UIScrollView发生一系列的滚动操作时,会自动通知它的代理(delegate)对象,给它的代理发送相应的消息,让代理得知它的滚动情况
  • 也就是说,要想监听UIScrollView的滚动过程,就必须先给UIScrollView设置一个代理对象,然后通过代理得知UIScrollView的滚动过程
 
UIScrollView和delegate的通信
  • 用户开始拖拽时,发送特定消息(调用:scrollViewWillBeginDragging:方法)
  • 具体滚动到某个位置时,发送特定消息(调用:scrollViewDidScroll:方法)
  • 用户停止拖拽时,发送特定消息(调用:scrollViewDidEndDragging:willDecelerate:方法)
所以,想要成为UIScrollView的delegate,是有条件的,必须实现对应的方法,才能监听UIScrollView的滚动过程。
UIScrollView将delegate需要实现的方法都定义在了UIScrollViewDelegate协议中,因此想要成为UIScrollView的delegate,必须遵守UIScrollViewDelegate协议,然后实现协议中的相应的方法,就可以监听UIScrollView的滚动过程了
后记:两个对象要想实现通信,需要另一个对象遵守协议(即成为代理),实现协议的方法给对象调用。
 
代理使用的步骤:
1、代理遵守协议
2、代理实现方法
3、设置为某个对象的代理(一般使用控制器作为代理监听)(例如:self.scrollView.delegate=self;)
 
UIScrollView的常见属性
@property (nonatomic) CGPoint contentOffset;
这个属性表示UIScrollView当前滚动的位置
 
@property (nonatomic) CGSize contentSize;
这个属性用来表示UIScrollView内容的尺寸,滚动范围
 
@property (nonatomic) UIEdgeInsets contentInset;
这个属性能够在UIScrollView的四周增加额外的滚动区域
 
UIScrollView的其他属性
@property (nonatomic) BOOL bounces;
设置UIScrollView是否需要弹簧效果
 
@property (nonatomic,getter=isScrollEnable) BOOL scrollEnabled;
设置UIScrollView是否能滚动
 
@property (nonatomic) BOOL showsHorizontalScrollIndicator;
是否显示水平滚动条
 
@property (nonatomic) BOOL showsVerticalScrollIndicator;
是否显示垂直滚动条
 
UIScrollView可以实现缩放功能
当用户在UIScrollView中使用捏合手势时,UIScrollView会给代理发送一条消息,询问代理究竟要缩放自己内部的哪一个子控件
即调用代理的-(UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView;方法
这个方法返回的就是要缩放的那个控件
要想完成缩放,还要设置最大最小缩放比例
缩放实现步骤:
  • 1.设置UIScrollView的Id<UIScrollViewDelegate>delegate代理对象
  • 2.设置minimumZoomScale:缩小的最小比例
  • 3.设置maxmumZoomScale:放大的最大比例
  • 4.让代理对象实现下面方法,返回需要缩放的视图控件
-(UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView;
 
 
分页
只要将UIScrollView的pageEnable属性设置为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
NSTimer叫做“定时器”,它的作用如下:
  • 在指定的时间执行执行的任务
  • 每隔一段时间执行指定的任务
 
使用定时器
定时器一旦被停止就相当于废弃掉了,如果再需要使用,需要重新创建一个定时器
在ios中处理ui和触摸事件的线程一般为主线程,如果在使用定时器的时候,发生了触摸事件,那么线程会去响应触摸事件,所以我们如果想要即处理触摸事件,又处理定时器时,就需要设置定时器的优先级
使用-(void)invalidate方法可以停止定时器
 

iOS----UIScrollView

标签:

原文地址:http://www.cnblogs.com/hqzxbb/p/4480057.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!