//UIScrollView 滚动视图
//滚动原因:控件大小限制了可显示的范围,如果想要显示更多的内容,需要滚动
//滚动的条件:内容大小 > frame.size
//内容大小
self.sv.contentSize = CGSizeMake(VIEW_WIDTH*6, VIEW_HEIGHT);
//偏移量
//只要视图滚动 偏移量就会变化
//只要改变偏移量 视图就会滚动
sv.contentOffset = CGPointMake(100, 100);
//内边距
sv.contentInset = UIEdgeInsetsMake(100, 200, 300, 400);
/* 整页翻动 */
//以当前滚动视图的宽度为1页
self.sv.pagingEnabled = YES;
/* 边缘弹动效果 */
self.sv.bounces = YES;
/* 滚到顶部 */
//每个滚动视图默认都为YES 一个页面中存在多个滚动视图时 仅开启需要滚动的视图 其他滚动视图置为NO
self.sv.scrollsToTop = NO;
/* 是否允许滚动 */
self.sv.scrollEnabled = YES;
/* 滚动条显示/隐藏 */
//水平Horizontal
self.sv.showsHorizontalScrollIndicator = NO;
//垂直Vertical
self.sv.showsVerticalScrollIndicator = NO;
//UIPageControl
//视图的滚动分为两个阶段:
//1.拖拽(手指在屏幕上)
//2.减速(手指离开屏幕)
self.sv.delegate = self;
//滚动视图功能为:滚动/缩放
//最小比例
self.sv.minimumZoomScale = 0.5;
//最大比例
self.sv.maximumZoomScale = 2;
#parma --- scrollView的代理方法
// scrollView正在滚动的时候调用 偏移量一直变化
- (void)scrollViewDidScroll:(UIScrollView *)scrollView;
// scrollView正在缩放
- (void)scrollViewDidZoom:(UIScrollView *)scrollView
//开始拖拽的时候调用
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView;
//即将停止拖拽的时候调用
- (void)scrollViewWillEndDragging:(UIScrollView *)scrollView withVelocity:(CGPoint)velocity targetContentOffset:(inoutCGPoint *)targetContentOffset NS_AVAILABLE_IOS(5_0);
// 已经停止拖拽调用
- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate;
//scrollView即将开始减速
- (void)scrollViewWillBeginDecelerating:(UIScrollView *)scrollView;
// scrollView停止减速 停止
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView;
//scrollView停止滚的的动画
- (void)scrollViewDidEndScrollingAnimation:(UIScrollView *)scrollView;
//在scrollView中 哪些控件是需要缩放的
- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView;
//scrollView即将开始缩放
- (void)scrollViewWillBeginZooming:(UIScrollView *)scrollView withView:(UIView *)view NS_AVAILABLE_IOS(3_2);
//scrollView结束缩放
- (void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(UIView *)view atScale:(CGFloat)scale;
//scrollView即将滚动到顶部
- (BOOL)scrollViewShouldScrollToTop:(UIScrollView *)scrollView;
//scrollView已经滚动到顶部
- (void)scrollViewDidScrollToTop:(UIScrollView *)scrollView;
通过UIScrollView实现缩放效果
//准备开始缩放的时候调用
- (void)scrollViewWillBeginZooming:(UIScrollView*)scrollView withView:(UIView*)view
//正在缩放的时候调用
- (void)scrollViewDidZoom:(UIScrollView*)scrollView
核心代码:设置内容大小
contentSize.height == 0设置为0仅仅代表竖直方向上不能滚动
self.scrollView.contentSize=CGSizeMake(count * w, 0);
分页
每一页的尺寸都是跟scrollView的frame.size一样的
self.scrollView.pagingEnabled=YES;
- (void)scrollViewDidScroll:(UIScrollView*)scrollView{
--四舍五入为整数的方法-- (int)(小数+ 0.5)
0.3 -> (int)(0.3 + 0.5) == 0
0.4 -> (int)(0.4 + 0.5) == 0
1.5 -> (int)(1.5 + 0.5) == 2
0.7 -> (int)(0.7 + 0.5) == 1
小数加上0.5再转换成整数,这样页码显示的就是正确的页数(仔细想)
intpage = (int)(scrollView.contentOffset.x/ scrollView.frame.size.width+ 0.5);
self.pageControl.currentPage= page;
}
- (void)scrollViewDidEndDecelerating:(UIScrollView*)scrollView{
intpage = scrollView.contentOffset.x/ scrollView.frame.size.width;
self.pageControl.currentPage= page;
}
分页
只要将UIScollView的pageEnabled属性设置为YES,UIScrollView会被分割成多个独立页面,里面的内容就能进行分页展示,一般会配合UIPageControl增强分页效果
//一共有多少页
@property(nonatomic)NSIntegernumberOfPages;
当前显示第几页
@property(nonatomic)NSIntegercurrentPage;
//只有一页时,是否需要隐藏页码指示器
@property(nonatomic)BOOLhidesForSinglePage;
//其他页码指示器的颜色
@property(nonatomic,retain)UIColor*pageIndicatorTintColor;
//当前页码指示器的颜色
@property(nonatomic,retain)UIColor*currentPageIndicatorTintColor;