程序样式 根据定时器会自动轮转
#import "ViewController.h"
@interface ViewController ()<UIScrollViewDelegate>
@property (weak, nonatomic) IBOutlet UIScrollView*scrollView;
@property (weak, nonatomic) IBOutlet UIPageControl*pageTitle;
@property(nonatomic,strong)NSTimer *time;
@end
@implementationViewController
- (void)viewDidLoad {
[super viewDidLoad];
//为滚动器添加5图片
for (int i=0; i<5; i++) {
UIImageView *imageV=[UIImageView new];
imageV.frame=CGRectMake(self.scrollView.frame.size.width*i, 0, self.scrollView.frame.size.width, self.scrollView.frame.size.height);
NSString *pictNumber=[NSString stringWithFormat:@"img_0%d",i+1];
imageV.image=[UIImage imageNamed:pictNumber];
[self.scrollView addSubview:imageV];
}
self.scrollView.contentSize=CGSizeMake(5*self.scrollView.frame.size.width, 0);
self.scrollView.pagingEnabled=YES;//是否自动生成页码
self.pageTitle.numberOfPages=5;//设置总页数
self.pageTitle.currentPage=0;//设置当前页数
self.scrollView.delegate=self;
[self addTimer];
}
-(void)addTimer{//新增一个定时器 功能是每隔2S调用一下 next方法 重复调用
NSTimer *time=[NSTimer scheduledTimerWithTimeInterval:2.0 target:self selector:@selector(next) userInfo:nil repeats:YES];
self.time=time;//记录当前定时器的走的时间
}
-(void)next{
NSInteger page=self.pageTitle.currentPage;//获取当前页数
if (page==4) {
page=0;//当达到5页时又回到0循环播放
}else
page++;
[self.scrollView setContentOffset:CGPointMake(self.scrollView.frame.size.width*page, 0) animated:YES];
//当前偏移量的X值是宽度乘以当前的页数
}
-(void)scrollViewDidScroll:(UIScrollView *)scrollView{
//点击scroll控件时用当前的图片的长度加上scorllview本身的长度去除当前控件的长度这样就是当前控件的页数
CGFloat viewXwith=self.scrollView.contentOffset.x+0.5*self.scrollView.frame.size.width;
//当页码翻到一半左右的时候page翻页
int page=viewXwith/self.scrollView.frame.size.width;
self.pageTitle.currentPage=page;
}
-(void)scrollViewWillBeginDecelerating:(UIScrollView*)scrollView{
//点击scroll控制器开始
[self.time invalidate];//让定时器停止
}
-(void)scrollViewDidEndDecelerating:(UIScrollView*)scrollView{
//点击scroll控制器结束 重新创建一个定时器 因为定时器一旦被终止将不会再被开启
[self addTimer];
}
@end