// // RootViewController.m #import "RootViewController.h" #define SCROLLWIDTH 300 //宽 #define SCROLLHEIGHT 350 //高 @interface RootViewController () { //滚动视图的对象指针 UIScrollView * scrollView; //分页控件的对象指针 UIPageControl * pageCtr; //时间控制器的对象指针 NSTimer * timer; } @end @implementation RootViewController //创建时间控制器 -(void)turnOnTimer{ timer = [NSTimer scheduledTimerWithTimeInterval:2.0 target:self selector:@selector(playImage) userInfo:nil repeats:YES]; [[NSRunLoop currentRunLoop] addTimer:timer forMode:NSRunLoopCommonModes]; } -(void)playImage{ NSInteger number=scrollView.contentOffset.x/SCROLLWIDTH+1; if (number== 4) { number=0; } scrollView.contentOffset = CGPointMake(number * SCROLLWIDTH, 0); pageCtr.currentPage=number; number++; } //创建滚动视图 -(void)createScrollView { scrollView = [[UIScrollView alloc]initWithFrame:CGRectMake(10, 70, SCROLLWIDTH, SCROLLHEIGHT)]; scrollView.contentOffset = CGPointMake(0, 0); scrollView.contentSize = CGSizeMake(SCROLLWIDTH * 4, SCROLLHEIGHT); self.automaticallyAdjustsScrollViewInsets =NO; //跟导航条一起使用 不关会出现bug scrollView.bounces = NO; //设置scrollView的内容视图 //scrollView上的子视图是平铺在滚动视图上 同一时刻只能显示与滚动视图范围相同大小的子视图 for(int i =0;i<4;i++) { UIImageView * imageView = [[UIImageView alloc]initWithFrame:CGRectMake(SCROLLWIDTH * i, 0, SCROLLWIDTH, SCROLLHEIGHT)]; NSString * nameStr = [NSString stringWithFormat:@"%d.jpg",i+1]; imageView.image = [UIImage imageNamed:nameStr]; [scrollView addSubview:imageView]; } [self.view addSubview:scrollView]; //隐藏横向、纵向的滚动条 scrollView.showsHorizontalScrollIndicator = NO; scrollView.showsVerticalScrollIndicator = NO; //开启滚动视图的分页效果 不开启的话 五幅图变成一个整体 scrollView.pagingEnabled = YES; scrollView.delegate = self; //调用协议的方法 不调用的话分页控件无效果 scrollView.minimumZoomScale = 1.0; scrollView.maximumZoomScale = 3.0; } -(void)createPageControl { pageCtr=[[UIPageControl alloc]initWithFrame:CGRectMake(50, SCROLLHEIGHT-50, 200, 30)]; //<1>设置分页控件的背景颜色 pageCtr.backgroundColor=[UIColor clearColor]; //透明色 //<2>设置分页控件的总页数 pageCtr.numberOfPages=4; //<3>设置初始化分页控件的页码 pageCtr.currentPage=0; //<4> [self.view addSubview:pageCtr]; //<5>为pageControl添加点击事件 [pageCtr addTarget:self action:@selector(pressPageControl:) forControlEvents:UIControlEventValueChanged]; } -(void)pressPageControl:(id)sender { //分页控件一次只能跳转一页 并且只能跳转相邻的页码 //<1>获取当前控件的显示页码 int pageNum =(int)pageCtr.currentPage; //<2>设置内容视图的偏移位置contentOffSet的值 [UIView animateWithDuration:0.3 animations:^{ //0.3是每次换页动作的需要时间 scrollView.contentOffset = CGPointMake(pageNum * SCROLLWIDTH, 0); } completion:nil]; } //实现协议中的方法 -(UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView { //由于全局变量的名称和该方法的形参名重名了 所以此处有警告 return [[scrollView subviews] objectAtIndex:pageCtr.currentPage]; } -(void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView { //<1>获取减速停止以后滚动视图上内容视图的偏移位置contentOffSet的值 CGPoint point = scrollView.contentOffset; //<2>设置分页控件当前的页码 pageCtr.currentPage = point.x / SCROLLWIDTH; } - (void)viewDidLoad { [super viewDidLoad]; self.navigationItem.title = @"滚动视图"; self.view.backgroundColor = [UIColor cyanColor]; [self createScrollView]; [self createPageControl]; [self turnOnTimer]; } @end
转载于:https://www.cnblogs.com/sayimba/p/5708428.html