iOS----UIScrollView

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方法可以停止定时器
 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。