import "ViewController.h" #define allPages 4 @interface ViewController ()<UIScrollViewDelegate> {UIScrollView *myScrollView;UIPageControl *pageControl;NSTimer timer; } @end @implementation ViewController - (void)viewDidLoad {[super viewDidLoad];myScrollView = [[UIScrollView alloc]initWithFrame:CGRectMake(0, 200, 414, 300)];myScrollView.contentSize = CGSizeMake(4144, 300);myScrollView.backgroundColor = [UIColor whiteColor];myScrollView.pagingEnabled = YES;myScrollView.delegate = self;[self.view addSubview:myScrollView];for (int index = 0; index<allPages; index++) { UIImageView imageView = [[UIImageView alloc]initWithFrame:CGRectMake(414index, 0, 414, 300)]; imageView.image = [UIImage imageNamed:[[NSString alloc]initWithFormat:@"%d.JPG",index+1]]; [myScrollView addSubview:imageView];}pageControl = [[UIPageControl alloc]initWithFrame:CGRectMake(0, 480, 414, 20)];pageControl.numberOfPages = 4;pageControl.tag = 101;pageControl.backgroundColor = [UIColor clearColor];//設置頁碼點的顏色pageControl.pageIndicatorTintColor = [UIColor grayColor];//設置選中頁碼點的顏色pageControl.currentPageIndicatorTintColor = [UIColor redColor];[pageControl sizeForNumberOfPages:2];[self.view addSubview:pageControl];[self addTimer];} #pragma mark 自定義方法 - (void)addTimer{//創(chuàng)建定時器,并是nextImage循環(huán)執(zhí)行 timer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(nextImage) userInfo:self repeats:YES]; } - (void)nextImage{ NSInteger page = 0;//判斷是否為最后一頁,如果是最后一頁調轉到第一頁;否則調到下一頁 if (pageControl.currentPage != allPages-1) { page = pageControl.currentPage + 1; }NSLog(@"%ld",page);CGPoint point = CGPointMake(myScrollView.frame.size.width * page, 0);//設置偏移量[myScrollView setContentOffset:point animated:YES];//創(chuàng)建線程NSRunLoop,監(jiān)聽timer[[NSRunLoop currentRunLoop]addTimer:timer forMode:NSDefaultRunLoopMode]; } - (void)stopTimer{ //銷毀定時器 [timer invalidate]; }
pragma mark 系統(tǒng)代理方法
//開始滑動時,調到下一個頁面;是頁碼移動
- (void)scrollViewDidScroll:(UIScrollView *)scrollView{ int page = (scrollView.contentOffset.x)/scrollView.frame.size.width; pageControl.currentPage = page; }
//開始拖動時銷毀定時器
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView{ [self stopTimer];}
//拖動結束時銷創(chuàng)建時器
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView{ [self addTimer]; }
@end
文/狼之神(簡書作者)原文鏈接:http://www.lxweimin.com/p/01f44685fc04著作權歸作者所有,轉載請聯(lián)系作者獲得授權,并標注“簡書作者”。