//
// ViewController.m
// 图片轮播器-(自动)
//
// Created by rms on 15/11/28.
// Copyright © 2015年 rms. All rights reserved.
//
#import "ViewController.h"
#define kIMAGECOUNT 8
@interface ViewController ()<UIScrollViewDelegate>
@property(nonatomic,strong) UIScrollView *scrollView;
@property(nonatomic,strong) UIImageView *leftImageView;
@property(nonatomic,strong) UIImageView *centerImageView;
@property(nonatomic,strong) UIImageView *rightImageView;
@property(nonatomic,strong)UIPageControl *pageControl;
@property(nonatomic,strong)NSTimer *timer;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
CGFloat width = self.view.frame.size.width;
CGFloat height = self.view.frame.size.height;
UIScrollView *scrollView = [[UIScrollView alloc]initWithFrame:self.view.bounds];
[self.view addSubview:scrollView];
UIPageControl *pageControl = [[UIPageControl alloc]initWithFrame:CGRectMake(0, height - 100, width, 20)];
pageControl.numberOfPages = kIMAGECOUNT;
pageControl.currentPageIndicatorTintColor = [UIColor redColor];
pageControl.pageIndicatorTintColor = [UIColor blackColor];
[self.view addSubview:pageControl];
self.pageControl = pageControl;
scrollView.contentSize = CGSizeMake(width * (kIMAGECOUNT + 2), 0);
scrollView.contentOffset = CGPointMake(width, 0);
scrollView.pagingEnabled = YES;
self.scrollView = scrollView;
scrollView.delegate = self;
//31231
[self imageViewWithFrame:CGRectMake(0, 0, width, height) imageName:[NSString stringWithFormat:@"%02d",kIMAGECOUNT]];
[self imageViewWithFrame:CGRectMake(width * (kIMAGECOUNT + 1), 0, width, height) imageName:@"01.jpg"];
for (int i = 1; i < kIMAGECOUNT + 1; i++) {
[self imageViewWithFrame:CGRectMake(width * i, 0, width, height) imageName:[NSString stringWithFormat:@"%02d",i]];
}
[self startTimer];
}
-(UIImageView *)imageViewWithFrame:(CGRect)frame imageName:(NSString *)imageName{
UIImageView *imageView = [[UIImageView alloc]initWithFrame:frame];
imageView.image = [UIImage imageNamed:imageName];
imageView.contentMode = UIViewContentModeScaleAspectFit;
imageView.clipsToBounds = YES;
[self.scrollView addSubview:imageView];
return imageView;
}
/开启一个全新的定时器
- (void) startTimer
{
// 定时器
// scheduled 调度(执行)
// Interval 间隔的时间 (s)
// target 目标(调用谁的方法)
// selector 方法(调用哪一个方法)
// repeats 是否需要重复执行
// 做了两件事 1.创建NSTimer的对象
// 2。把这个NSTimer以默认形式添加到了主运行循环中 (默认优先级低于事件处理的优先级)
// self.timer = [NSTimer scheduledTimerWithTimeInterval:2 target:self selector:@selector(nextImage) userInfo:nil repeats:YES];
// 1.创建NSTimer对象
NSTimer *timer = [NSTimer timerWithTimeInterval:2 target:self selector:@selector(nextImage) userInfo:nil repeats:YES];
// 2.添加到主运行循环中
// Run 运行 Loop 循环
// NSDefaultRunLoopMode 默认模式(低于事件处理优先级)
// NSRunLoopCommonModes 通用模式 (于事件处理的优先级相同)
[[NSRunLoop mainRunLoop] addTimer:timer forMode:NSRunLoopCommonModes];
// 3.记录当前的timer
self.timer = timer;
}
-(void)nextImage{
NSInteger page = self.pageControl.currentPage;
if (page == self.pageControl.numberOfPages - 1) {
page = 0;
// [UIView animateWithDuration:1 animations:^{
self.scrollView.contentOffset = CGPointMake(self.scrollView.frame.size.width * (page+1), 0);
// }];
}else{
page++;
[UIView animateWithDuration:1 animations:^{
self.scrollView.contentOffset = CGPointMake(self.scrollView.frame.size.width * (page+1), 0);
}];
}
}
- (void) scrollViewWillBeginDragging:(UIScrollView *)scrollView
{
// 停止定时器
// 让定时器失效,一旦失效就不能在使用了。
[self.timer invalidate];
}
/**
* 当用户的手指从scrollViwew上抬起的时候执行这个方法
*/
- (void) scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate
{
// 重新开始调度
[self startTimer];
}
-(void)scrollViewDidScroll:(UIScrollView *)scrollView{
CGPoint offset = scrollView.contentOffset;
int page = round(offset.x / scrollView.frame.size.width);
NSLog(@"%d",page);
self.pageControl.currentPage = page - 1;
if (page == kIMAGECOUNT + 1) {
scrollView.contentOffset = CGPointMake(scrollView.frame.size.width, 0);
}
if(page == 0){
scrollView.contentOffset = CGPointMake(scrollView.frame.size.width * kIMAGECOUNT, 0);
}
}
@end