//
// ViewController.m
// ui_自动轮播啊
//
// Created by Lynsea on 16/1/16.
//
import “ViewController.h”
define WIDTH [UIScreen mainScreen].bounds.size.width
define HEIGHT [UIScreen mainScreen].bounds.size.height
@interface ViewController ()
{
UIScrollView *scroll;
UIPageControl *pageCon;
UIPageControl *pageCon1;
NSTimer *_timer;
}
@end
@implementation ViewController
(void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.// 这个自动轮播视图的有两个pageControl;第一个pageControl是用来控制scrollview自动轮播,第二个是用来给人带来视觉效果.可以不要 通过scrollView的的偏移量可获得pageControl的页数,然后再改变scrollView的坐标.从而可达到自动轮播
//本次例子是假设要放4张图片轮播,那么scrollview的ContentSize应该设成6个宽度,那么图片的放法为301230; 然后设置当前坐标为CGPointMake(WIDTH, 0)
scroll = [[UIScrollView alloc]initWithFrame:CGRectMake(0, 20, WIDTH, 200)];
[self.view addSubview:scroll];
scroll.delegate = self;
[scroll setPagingEnabled:YES];
[scroll setShowsHorizontalScrollIndicator:NO];
[scroll setContentSize:CGSizeMake(6*WIDTH, 0)];
[scroll setContentOffset:CGPointMake(WIDTH, 0)];UIImageView *image1 = [[UIImageView alloc]initWithFrame:CGRectMake(0, 0, WIDTH, 200)];
[image1 setImage:[UIImage imageNamed:@”iu3.jpg”]];
[scroll addSubview:image1];UIImageView image2 = [[UIImageView alloc]initWithFrame:CGRectMake(WIDTH 5, 0, WIDTH, 200)];
[image2 setImage:[UIImage imageNamed:@”iu0.jpg”]];
[scroll addSubview:image2];for (int i = 1; i < 5; i ++) {
UIImageView image = [[UIImageView alloc]initWithFrame:CGRectMake(WIDTH i, 0, WIDTH, 200)];
[image setImage:[UIImage imageNamed:[NSString stringWithFormat:@”iu%d.jpg”,i-1]]];
[scroll addSubview:image];}
//这个pageControl设为隐藏,主要目的是获得位置来控制轮播
pageCon = [[UIPageControl alloc]initWithFrame:CGRectMake(200, 150, 80, 30)];
//因为scrollView实际上放了6张图片,所以页数设置为6
[pageCon setNumberOfPages:6];
//让初始页数设成一,所以就指向的图片为0
pageCon.currentPage = 1;
[pageCon setCurrentPageIndicatorTintColor:[UIColor redColor]];[self.view addSubview:pageCon];
[pageCon setHidden:YES];
//把定时器添加
_timer = [NSTimer timerWithTimeInterval:1 target:self selector:@selector(timerAction) userInfo:nil repeats:YES];
// 添加到运行循环
[[NSRunLoop currentRunLoop] addTimer:_timer forMode:NSRunLoopCommonModes];pageCon1 = [[UIPageControl alloc]initWithFrame:CGRectMake(250, 180, 80, 30)];
[pageCon1 setNumberOfPages:4];
[pageCon1 setCurrentPageIndicatorTintColor:[UIColor redColor]];
[self.view addSubview:pageCon1];
}
//定时器方法
-(void)timerAction{
//页数是012345 别误会
//如果第一个page的当前页数小于5,就会自动跳到下一页,为什么没有5呢,因为它不会到达第五张,后面的Scroll有写到,当scroll到达最后一张的时候,会自动跳到第一张
if (pageCon.currentPage < 5) {
[scroll setContentOffset:CGPointMake((pageCon.currentPage +1) * WIDTH, 0) animated:YES];
}
}
-(void)scrollViewDidScroll:(UIScrollView *)scrollView{
//因为这个pageControl只有4页,所以当scroll.contentOffset.x= Width 时,它的页数为1
pageCon1.currentPage = (scroll.contentOffset.x /WIDTH) -1;
//这个是有6页的,所以正常偏移
pageCon.currentPage = scroll.contentOffset.x /WIDTH;
if (scroll.bounds.origin.x == 0) {
//当scroll来到第0张的时候会自动跳到第五张图片,而且滑动效果关掉,就看不出了
[scroll setContentOffset:CGPointMake(WIDTH *4, 0) animated:NO];
}
if (scroll.bounds.origin.x == 5*WIDTH) {
//当Scroll来到第6张图片的时候会自动跳到第二张,即指向0
[scroll setContentOffset:CGPointMake(WIDTH, 0) animated:NO];
}
}
-(void)scrollViewWillBeginDecelerating:(UIScrollView *)scrollView
{
_timer=[NSTimer scheduledTimerWithTimeInterval:3 target:self selector:@selector(timerAction) userInfo:nil repeats:YES];
[[NSRunLoop mainRunLoop] addTimer:_timer forMode:NSDefaultRunLoopMode];
}
-(void)scrollViewWillBeginDragging:(UIScrollView *)scrollView
{
[_timer invalidate];
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end