UIScrollView 實現圖片自動輪轉
// // ViewController.m // 圖片自動輪轉 // // Created by dc0061 on 15/12/21. // Copyright ? 2015年 dc0061. All rights reserved. //import "ViewController.h"
@interface ViewController ()<UIScrollViewDelegate> { UIScrollView _scrollview; UIImageView _imgae; //NSTimer時間間隔比較大(幾秒) CADisplayLink時間間隔比較小(0.0幾秒) NSTimer _timer; UIPageControl _page; } @end
@implementation ViewController
- (void)viewDidLoad { [super viewDidLoad]; _scrollview =[[UIScrollView alloc]initWithFrame:CGRectMake(0, 10, 375, 250)]; _scrollview.delegate=self; [self.view addSubview:_scrollview]; for (int i=1; i<7; i++) { _imgae =[[UIImageView alloc]initWithFrame:CGRectMake(375(i-1), 10, 375i, 250)]; _imgae.image=[UIImage imageNamed:[NSString stringWithFormat:@"%i",i]]; [_scrollview addSubview:_imgae]; } //設置偏移量,不需要豎著偏移,所以不需要設置數據 _scrollview.contentSize=CGSizeMake(3756, 0); //實現scrollview的分頁顯示,當允許分頁時,scrollview會按照自身寬度作為一頁來開始分頁 _scrollview.pagingEnabled=YES; //隱藏水平滾動指示器 _scrollview.showsHorizontalScrollIndicator=NO; //添加分頁顯示點 _page=[[UIPageControl alloc]initWithFrame:CGRectMake(200, 270, 150, 20)]; _page.numberOfPages=6;//設置頁碼的總數 _page.currentPage=0;//設置當前頁,從0開始 _page.currentPageIndicatorTintColor=[UIColor redColor];//設置當前頁點的顏色 _page.pageIndicatorTintColor=[UIColor blueColor];//設置點的顏色 [self.view addSubview:_page]; //創建一個計時器 _timer=[NSTimer scheduledTimerWithTimeInterval:2.0f target:self selector:@selector(jishi) userInfo:nil repeats:YES]; } //scrollview代理滾動事件 - (void) scrollViewDidScroll:(UIScrollView )scrollView{ //設置UIPageControl當前位置 CGFloat x=scrollView.contentOffset.x+375.0/2.0;//當圖片滾動一半之后,就修改UIPageControl的值 _page.currentPage= x/375.0; } - (void) jishi{ NSInteger page=_page.currentPage;//得到pagecontrol的當前頁碼 //判斷是否是最后一頁 if (page==5) { page=0; }else{ page++; } //設置新的偏移值 CGFloat offsetX=page*_scrollview.frame.size.width; [_scrollview setContentOffset:CGPointMake (offsetX,0) animated:YES]; }
- (void) scrollViewWillBeginDragging:(UIScrollView )scrollView{ //方法一 // [_timer invalidate];//停止計時器:這個方法停止的計時器,就不可以在重用下次必須創建新的 // _timer=nil;//上面方法調用后,這個計時器已經廢掉了,所有可以直接設置成nil //方法二 : 關閉計時器 [_timer setFireDate:[NSDate distantFuture]]; } - (void) scrollViewDidEndDragging:(UIScrollView )scrollView willDecelerate:(BOOL)decelerate{ //方法一 // _timer=[NSTimer scheduledTimerWithTimeInterval:2.0f target:self selector:@selector(jishi) userInfo:nil repeats:YES]; //方法二 : 開啟計時器 [_timer setFireDate:[NSDate distantPast]]; }
- (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; }
@end</pre>