09 UIScrollView 、 UIPageControl
1.UIScrollview
1)核心功能:
滚动:只有contentSize大于frame.size的时候,才能够滚动。
缩放:自带缩放,可以指定缩放倍数。
UIScrollView滚动相关属性:
contentSize //定义内容区域大小,决定是否能够滑动
contentOffset //视图左上角距离坐标原点的偏移量
scrollsToTop //滑动到顶部(点状态条的时候)
pagingEnabled //是否整屏翻动
bounces //边界是否回弹
scrollEnabled //是否能够滚动
showsHorizontalScrollIndicator //控制是否显示水平方向的滚动条
showVerticalScrollIndicator //控制是否显示垂直方向的滚动条
alwaysBounceVertical //控制垂直方向遇到边框是否反弹
alwaysBounceHorizontal //控制水平方向遇到边框是否反弹
UIScrollView缩放相关属性:
minimumZoomScale // 缩小的最小比例
maximumZoomScale //放大的最大比例
zoomScale //设置变化比例
zooming //判断是否正在进行缩放反弹
bouncesZoom //控制缩放的时候是否会反弹
要实现缩放,还需要实现delegate,指定缩放的视图是谁。
2).UIScrollView的常用代理方法
1)与滚动有关的代理方法
//将要开始拖拽(手指触碰到屏幕,并且移动)
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView{
}
//已经开始滚动(只要scrollview是滚动状态就会调用此方法)
- (void)scrollViewDidScroll:(UIScrollView *)scrollView{
}
//停止拖动(当手指(触摸对象)离开,正在滚动的视图减速)
- (void)scrollViewWillBeginDecelerating:(UIScrollView *)scrollView{
NSLog(@--%s, __func__);
}
//视图真正静止(视图不动了)
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView{
NSLog(@%s,__func__);
}
3)与缩放有关的代理方法
//指定scrollView的某一个子视图为可缩放视图(只能指定一个!),前提条件是子视图已经添加到scrollView上面
- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView{
}
//开始缩放的代理方法 第二个参数view:这个参数是指我们要缩放的视图(这里就是imageView)。
- (void)scrollViewWillBeginZooming:(UIScrollView *)scrollView withView:(UIView *)view{
NSLog(@---%@, view);
}
//正在缩放的代理方法 只要正在缩放,就会执行此方法。所以此方法会在缩放过程中多次调用
- (void)scrollViewDidZoom:(UIScrollView *)scrollView{
}
//缩放结束所执行的代理方法
- (void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(UIView *)view atScale:(CGFloat)scale{
}
2.UIPageControl
UIPageControll 是继承于UIControl的一个IOS系统UI控件,可以提供给开发者设计分页效果的功能。pageControl不单独使用,通常与scrollView结合使用。
初始化方法:
UIPageControl * page = [[UIPageControl alloc]initWithFrame:CGRectMake(100, 100, 100, 100)];
属性:
设置控制器页数(默认为0)
@property(nonatomic) NSInteger numberOfPages;
设置当前所在页码
@property(nonatomic) NSInteger currentPage;
设置当总页数为1时,是否自动隐藏控制器
@property(nonatomic) BOOL hidesForSinglePage;
设置是否延迟自动更新控制器的当前页码(默认为NO)
@property(nonatomic) BOOL defersCurrentPageDisplay;
注意:这个属性如果设置为YES,点击时并不会改变控制器显示的当前页码点,必须手动调用
- (void)updateCurrentPageDisplay;
这个方法,才会更新。
更新控制器当前页码
- (void)updateCurrentPageDisplay;
通过页数得到控制器大小
- (CGSize)sizeForNumberOfPages:(NSInteger)pageCount;
这个属性用于页数会变化的情况下进行大小动态处理
设置控制器页码点得颜色
@property(nonatomic,retain) UIColor *pageIndicatorTintColor;
设置控制器当前所在页码点的颜色
@property(nonatomic,retain) UIColor *currentPageIndicatorTintColor;