//
// 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