国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > iOS > 正文

iOS實現圖片輪播器

2020-07-26 02:18:10
字體:
來源:轉載
供稿:網友

有時候肯能會用到圖片輪播器,做廣告的效果。下面詳細介紹iOS如何實現圖片輪播器

1.新建一個項目,導入5張圖片(為了代碼方便,我把圖片命名規范了,其實無所謂)

2.在mainstoryboard中拖入ScrollView和Page Control(也可以代碼寫,或者是自定義xib)

設置page control的 Current Page屬性,決定輪播的當前頁顯示的顏色

3.接下來就是正式代碼了

//(1)將需要展⽰的內容添加到UIScrollView中//(2)設置UIScrollView的contentSize屬性,告訴UIScrollView所有內容的尺寸,也就是告訴 它滾動的范圍(能滾多遠,滾到哪⾥是盡頭)#define imageCount 5#import "ViewController.h" @interface ViewController ()<UIScrollViewDelegate>@property (weak, nonatomic) IBOutlet UIScrollView *scrollView;@property (weak, nonatomic) IBOutlet UIPageControl *pageControl;@property(nonatomic,strong)NSTimer *timer; @end @implementation ViewController - (void)viewDidLoad{ [super viewDidLoad]; //1.添加5張圖片到scrollView中 //設置圖片frame,尺寸與scrollView一樣高 CGFloat imageW=self.scrollView.frame.size.width; CGFloat imageH=self.scrollView.frame.size.height; //圖片的具體位置需要動態計算 CGFloat imageY=0; for (int i=0; i<imageCount; i++) {  UIImageView *imageView=[[UIImageView alloc]init];  CGFloat imageX=i*imageW;  imageView.frame=CGRectMake(imageX, imageY, imageW, imageH);    //設置圖片  NSString *name=[NSString stringWithFormat:@"img_0%d",i+1];  imageView.image=[UIImage imageNamed:name];    [self.scrollView addSubview:imageView]; }  //2.設置滾動內容的尺寸 CGFloat contentW=5*imageW; self.scrollView.contentSize=CGSizeMake(contentW, 0);  //3.隱藏水平的滾動條 self.scrollView.showsHorizontalScrollIndicator=NO;  //4.分頁 self.pageControl.enabled=YES;  //5.設置代理 self.scrollView.delegate=self;  //6.設置pageControl的總頁數 self.pageControl.numberOfPages=imageCount;  //7.添加定時器 self.timer=[NSTimer scheduledTimerWithTimeInterval:2.0 target:self selector:@selector(nextImage) userInfo:nil repeats:YES]; [[NSRunLoop currentRunLoop]addTimer:self.timer forMode:NSRunLoopCommonModes];}-(void)nextImage{ int page=0; if(self.pageControl.currentPage==imageCount-1) {  //如果滾動到最后一頁了,那下一頁就是第一頁  page=0; } else {  //否則就是下一頁  page=(int)self.pageControl.currentPage+1; }  //2.計算scrollView滾動的位置 CGFloat offsetX=page*self.scrollView.frame.size.width; CGPoint offset=CGPointMake(offsetX, 0); [self.scrollView setContentOffset:offset animated:YES];} //開始拖拽的時候調用-(void)scrollViewWillBeginDragging:(UIScrollView *)scrollView{ //停止定時器 [self.timer invalidate]; self.timer=nil;} //停止拖拽的時候調用-(void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate{ //再次開啟定時器 self.timer=[NSTimer scheduledTimerWithTimeInterval:2.0 target:self selector:@selector(nextImage) userInfo:nil repeats:YES]; [[NSRunLoop currentRunLoop]addTimer:self.timer forMode:NSRunLoopCommonModes]; }//當scrollView正在滾動就會調用-(void)scrollViewDidScroll:(UIScrollView *)scrollView{ //根據scrollView的滾動位置決定pageControl顯示第幾頁 int page=(scrollView.contentOffset.x+self.scrollView.frame.size.width*0.5)/scrollView.frame.size.width; self.pageControl.currentPage=page;}

4.效果圖:

5.本圖片輪播器解決了兩個比較關鍵的問題:

(1)當用戶拖拽的時候,定時器是停止的,用戶松開的時候,定時器又起來了。防止用戶長時間拽著某圖片不放,突然松開后,瞬間往后跳過去。

(2)判斷了當前顯示頁。當后面的圖片出現在scrollView超過1/2的距離時,就表明是下一頁了,綠點就跑到下一頁去。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 合阳县| 嘉兴市| 密山市| 和田市| 昌宁县| 平江县| 安岳县| 普洱| 新巴尔虎右旗| 巴马| 绥滨县| 赤壁市| 津市市| 延寿县| 吉林省| 张北县| 读书| 南宫市| 高台县| 玉山县| 泗阳县| 阜新| 诸城市| 镇康县| 海宁市| 华宁县| 互助| 保亭| 丽水市| 邵东县| 洪雅县| 弥勒县| 田林县| 当雄县| 德州市| 怀仁县| 临沂市| 滁州市| 红原县| 元阳县| 红原县|