滚动视图 多个页面实现的原理 滚动视图位置不变 内容的位置发生改变
//1 。 分页查看图片
//2 。查看大图片
//3 。当内容过多 需要一个页面显示 (如注册 修改个人信息。。。)
//4 .当不希望用户感觉咱们的界面 是一张图片的时候 contentSize height+1 or width+1;
//contentSize height +1;
1、查看大图片
初始化一个滚动视图
UIScrollView *myScrollView = [[UIScrollView alloc]initWithFrame:self.view.frame];
myScrollView.backgroundColor = [UIColor brownColor];
设置滚动视图的contentSize 如果contentSize小于滚动视图的bounds就不会滚动
(设置视图可以滚动的范围)
myScrollView.contentSize = CGSizeMake(0, CGRectGetHeight(self.view.frame)+1000);
设置滚动视图的contentSize跟图片的尺寸一样(这个是设置视图的偏移量)
myScrollView.contentSize = bgImage.size;
放大图片
1、需要用到 滚动视图的代理方法
2、设置放大和缩小视图的最大倍数和最小倍数
3、让滚动视图知到要方法哪一个视图
设置滚动视图的最小缩小倍数
myScrollView.minimumZoomScale = 0.5;
设置滚动视图的最大方法倍数
myScrollView.maximumZoomScale = 2;
使用滚动视图的代理方法 需要挂上代理
myScrollView.delegate = self;
pragma mark ——————scrollViewDelegate
//设置需要在滚动视图中要放大的视图
()导入的代理:
- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView
{
//这里需要返回的是需要缩放的视图(一个图片视图等UIView*)
}
2、
设置屏蔽滚动条(Vertical垂直的,竖向的)
myScrollView.showsVerticalScrollIndicator = NO;
屏蔽滚动条(Horizontal水平的)
myScrollView.showsHorizontalScrollIndicator = NO;
设置是否 允许 点击 滚动 到最顶部)(初始位置)默认的是yes;
myScrollView.scrollsToTop =YES;
调用的方法:
//滚动到屏幕的最顶部 的时候调用
- (void)scrollViewDidScrollToTop:(UIScrollView *)scrollView
{
}
//手指将要开始拖拽的时候(手指触碰到屏幕的时候)
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView
{
}
//已经开始滚动的时候调用
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
}
分页查看图片
设置滚动视图分页效果
myScrollView.pagingEnabled =YES;
谁知滚动视图的样式
myScrollView.indicatorStyle = UIScrollViewIndicatorStyleBlack;
设置滚动视图的偏移量 可以达到 设置滚动视图默认在第几屏的位置
还可以通过contentOffset来判断 滚动到第几屏
myScrollView.contentOffset = CGPointMake(CGRectGetWidth(self.view.frame), 0);
设置是否有反弹的效果(默认是Yes允许看到底图,并由反弹效果)(设置成NO的话就没有反弹效果)
myScrollView.bounces =YES;
UIPageControl页面控制:点点点
初始化
UIPageControl *pageControl = [[UIPageControl alloc]initWithFrame:CGRectMake(0, CGRectGetHeight(self.view.frame)-40, CGRectGetWidth(self.view.frame), 20)];
pageControl.tag = 119;
设置UIPageControl总共多少页
pageControl.numberOfPages = imageNames.count;
设置 指示 的 当前页面
pageControl.currentPage = 1;
当只有一个页面的时候 隐藏pageControl
pageControl.hidesForSinglePage = YES;
设置空心小圆点的颜色(轨道的颜色)
pageControl.pageIndicatorTintColor = [UIColor redColor];
设置当前的小圆点的颜色
pageControl.currentPageIndicatorTintColor = [UIColor blueColor];
在哪一个页面 通过偏移的X轴的位置除以屏幕的宽度得到当前的页数
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
NSLog(@"%f",scrollView.contentOffset.x);
// 在哪一个页面 通过偏移的X轴的位置除以屏幕的宽度得到当前的页数
}
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
//得到一个当前的页数
//滚动视图的偏移量 (持有的数据) 屏幕的宽(持有的数据)
//滚动视图X的偏移量
CGFloat x= scrollView.contentOffset.x;
//屏幕的宽
CGFloat w= CGRectGetWidth(self.view.frame);
NSLog(@"%f",x);
//偏移量除以宽 得到当前页面的页数
NSInteger curPage = x/w;
UIPageControl *pageControl = (UIPageControl *)[self.view viewWithTag:119];
//设置pageControl的当前页面
pageControl.currentPage =curPage;
}