滑动视图的使用spa
//滑动视图的建立,并设置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; }
滑动视图代理方法,使用滑动视图进行分页,而且使其显示的图片能够能够循环滚动。code
使视图实现循环滚动的总体思想:假如一共有6页,6张图片是按次序排好的,则在第一页的前面放第六张图片,在最后一页的后面放第一页的图片,当图片滑动到该循环的地方时,改变图片的偏移量,这样当用户滑动的时候图片出现的不是太突兀。只是经过改变偏移量就ok了!orm
- (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); } }