#import "ViewController.h"
@interface ViewController () <UIScrollViewDelegate>
@property (nonatomic, strong) UIImageView *myImageView;
@property (nonatomic, strong) UIScrollView *scrollView;
@property (nonatomic, strong) UIPageControl *pageControl;
@property (nonatomic, strong) NSArray *imageArray;
@property (nonatomic, strong) NSMutableArray *viewArray;
@property (nonatomic, strong) NSTimer *timer; // 设置动画
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
// 初始化
self.scrollView = [[UIScrollView alloc]initWithFrame:self.view.frame];
// 设置代理
self.scrollView.delegate = self;
// 设置自动分页 可以滚动
self.scrollView.pagingEnabled = YES;
// 开启用户交互
self.scrollView.userInteractionEnabled = YES;
[self.view addSubview:self.scrollView];
[self loadImage];
[self addtimer];
}
// 加载图片
- (void)loadImage
{
// 初始化数组, 并将图片存放到数组中去
self.imageArray = [NSArray arrayWithObjects:[UIImage imageNamed:@"nba_0.jpg"],[UIImage imageNamed:@"nba_1.jpg"], [UIImage imageNamed:@"nba_2.jpg"],[UIImage imageNamed:@"nba_3.jpg"],[UIImage imageNamed:@"nba_4.jpg"],nil];
for (int i = 0; i < self.imageArray.count; i++) {
UIScrollView *newSview = [[UIScrollView alloc]initWithFrame:CGRectMake(i * self.view.frame.size.width, 0, self.view.frame.size.width, self.view.frame.size.height)];
UIImage *image = [UIImage imageNamed:[NSString stringWithFormat:@"nba_%d.jpg",i]];
self.myImageView = [[UIImageView alloc]initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)];
self.myImageView.image = image;
self.myImageView.userInteractionEnabled = YES;
newSview.delegate = self;
[newSview addSubview:_myImageView];
[_scrollView addSubview:newSview];
}
// 设置 contentsize
self.scrollView.contentSize = CGSizeMake(self.view.frame.size.width * self.imageArray.count, self.view.frame.size.height);
// 设置 pageControl
self.pageControl = [[UIPageControl alloc]initWithFrame:CGRectMake(0, self.view.frame.size.height - 50, self.view.frame.size.width, 30)];
self.pageControl.numberOfPages = self.imageArray.count;
self.pageControl.currentPage = 0;
self.pageControl.backgroundColor = [UIColor grayColor];
// 代理方法
[self.pageControl addTarget:self action:@selector(changePage:) forControlEvents:UIControlEventValueChanged];
[self.view addSubview:self.pageControl];
#pragma mark---- 存放 controller 的数组
self.viewArray = [[NSMutableArray alloc]init];
for (int i = 0 ; i< self.imageArray.count; i++) {
[self.viewArray addObject:[NSNull null]];
}
}
// 点击事件
- (void)changePage:(id)sender
{
[self.scrollView setContentOffset:CGPointMake(self.pageControl.currentPage * self.view.frame.size.width, 0)];
}
// 滚动结束时候, 圆点和图片一起滚动
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
// NSInteger index = self.scrollView.contentOffset.x / self.view.frame.size.width;
// self.pageControl.currentPage = index;
// 或者
self.pageControl.currentPage = fabs(self.scrollView.contentOffset.x / self.view.frame.size.width);
}
// 通过计时器来实现轮播
#pragma mark----- 时间管理轮播图播放
- (void)addtimer{
self.timer = [NSTimer scheduledTimerWithTimeInterval:1.0f target:self selector:@selector(repeatPage) userInfo:nil repeats:YES];
// 添加到主线程中去, 返回当前的消息循环对象
[[NSRunLoop mainRunLoop]addTimer:self.timer forMode:NSRunLoopCommonModes];
}
- (void)repeatPage
{
int page = 0;
if (self.pageControl.currentPage == 4) {
page =0;
}else{
page = (int)self.pageControl.currentPage + 1;
}
// 计算滚动位置
CGFloat offsetX = page * _scrollView.frame.size.width;
CGPoint offset = CGPointMake(offsetX, 0);
[_scrollView setContentOffset:offset animated:YES];
}
// 滚动事件, 开始滚动的时候, 改变 pageControl 的 currentPage 的值
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
CGFloat scrollX = _scrollView.frame.size.width;
int page = (scrollView.contentOffset.x + scrollX * 0.5 ) / scrollX;
self.pageControl.currentPage = page;
}
//- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView
//{
// [self.timer invalidate];
// self.timer = nil;
//}
//
//- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate
//{
// [self addtimer];
//}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end