滑动视图的使用
//滑动视图的创建,并设置frame值
UIScrollView *scroller = [[UIScrollView alloc]initWithFrame:CGRectMake(0, 0, 375, 300)];
// 设置滑动视图内容的大小
scroller.contentSize = CGSizeMake(800, 900);
scroller.backgroundColor = [UIColor blackColor];
[self.view addSubview:scroller];
UIView *view = [[UIView alloc]initWithFrame:CGRectMake(0, 0, 375, 300)];
view.backgroundColor = [UIColor blackColor];
[scroller addSubview:view];
UIView *view2 = [[UIView alloc]initWithFrame:CGRectMake(375, 0, 375, 300)];
view.backgroundColor = [UIColor orangeColor];
[scroller addSubview:view2];
UIView *view3 = [[UIView alloc]initWithFrame:CGRectMake(0, 200, 375, 300)];
view3.backgroundColor = [UIColor redColor];
[scroller addSubview:view3];
//设置滚动条
scroller.showsHorizontalScrollIndicator = NO;
scroller.showsVerticalScrollIndicator = NO;
//设置样式
scroller.indicatorStyle = UIScrollViewIndicatorStyleBlack;
scroller.indicatorStyle = UIScrollViewIndicatorStyleWhite;
scroller.indicatorStyle = UIScrollViewIndicatorStyleDefault;
//反弹效果
//scroller.bounces = NO;
//内容偏移量具体左边和上边的位置时300 200;
//scroller.contentOffset = CGPointMake(300, 200);
//分页显示
scroller.pagingEnabled = YES;
//禁用滑动效果
// scroller.scrollEnabled = NO;
}
滑动视图代理方法,对滑动视图进行缩放
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
UIScrollView *scorllView = [[UIScrollView alloc]initWithFrame:self.view.bounds];
[self.view addSubview:scorllView];
UIImageView *imgView = [[UIImageView alloc]initWithFrame:CGRectMake(0, 0, 320, 568)];
imgView.image = [UIImage imageNamed:@"5.jpeg"];
imgView.tag = 100;
[scorllView addSubview:imgView];
scorllView.delegate = self;
//设置图片的缩放比例
scorllView.minimumZoomScale = 0.5;
scorllView.maximumZoomScale = 2.0;
scorllView.bouncesZoom = NO;
}
//实现UIScrollerView的代理方法
- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView
{
UIImageView *imgView = (UIImageView *)[scrollView viewWithTag:100];
return imgView;
}
滑动视图代理方法,使用滑动视图进行分页,并且使其显示的图片可以可以循环滚动。
使视图实现循环滚动的整体思想:假如一共有6页,6张图片是按次序排好的,则在第一页的前面放第六张图片,在最后一页的后面放第一页的图片,当图片滑动到该循环的地方时,改变图片的偏移量,这样当用户滑动的时候图片出现的不是太突兀。只是通过改变偏移量就ok了!
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
// 创建滚动视图
[self creatScrollView];
}
- (void)creatScrollView
{
//创建滑动视图
UIScrollView *scrollView = [[UIScrollView alloc]initWithFrame:CGRectMake(0, 0, KWIDTH, KHEIGHT)];
scrollView.backgroundColor = [UIColor blueColor];
[self.view addSubview:scrollView];
//设置滑动视图的分页状态
scrollView.pagingEnabled = YES;
// 利用for循环,在滑动视图上添加imageview 并添加图片
for (int i = 0; i < 6; i ++)
{
NSString *imgStr = [NSString stringWithFormat:@"%d.jpeg",i + 1];
UIImageView *imgView = [[UIImageView alloc]initWithFrame:CGRectMake((i + 1) * KWIDTH, 0 , KWIDTH, KHEIGHT)];
imgView.image = [UIImage imageNamed:imgStr];
[scrollView addSubview:imgView];
}
//设置滑动视图内容的大小
scrollView.contentSize = CGSizeMake(KWIDTH * 8, KHEIGHT);
//设置代理
scrollView.delegate = self;
UIImage *img1 = [UIImage imageNamed:@"1.jpeg"];
UIImageView *imgView1 = [[UIImageView alloc]initWithFrame:CGRectMake(7 * KWIDTH, 0, KWIDTH, KHEIGHT)];
imgView1.image = img1;
[scrollView addSubview:imgView1];
UIImage *img2 = [UIImage imageNamed:@"6.jpeg"];
UIImageView *imgView2 = [[UIImageView alloc]initWithFrame:CGRectMake( 0, 0, KWIDTH, KHEIGHT)];
imgView2.image = img2;
[scrollView addSubview:imgView2];
//pageContr为全局变量
pageContr = [[UIPageControl alloc]initWithFrame:CGRectMake(150, KHEIGHT - 50, 100, 50)];
设置当前页及页数
pageContr.currentPage = 0;
pageContr.numberOfPages = 6;
[self.view addSubview:pageContr];
}
//实现scrollViewDidEndDecelerating,滑动视图没有速度时调用的代理方法
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
pageContr.currentPage = (int)(scrollView.contentOffset.x + KWIDTH/2)/KWIDTH;
if (scrollView.contentOffset.x == 7 * KWIDTH)
{
scrollView.contentOffset = CGPointMake(KWIDTH, 0);
}
if(scrollView.contentOffset.x == 0)
{
scrollView.contentOffset = CGPointMake(6 * KWIDTH, 0);
}
}