色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

您好,歡迎來電子發(fā)燒友網(wǎng)! ,新用戶?[免費注冊]

您的位置:電子發(fā)燒友網(wǎng)>源碼下載>通訊/手機編程>

怎樣才能實現(xiàn)高效圖片輪播

大小:0.3 MB 人氣:0 2017-09-26 需要積分:1

  輪播實現(xiàn)步驟

  接下來,筆者將從各方面逐一分析。

  層級結(jié)構(gòu)

  最底層是一個UIView,上面有一個UIScrollView以及UIPageControl,scrollView上有兩個UIImageView,imageView寬高 = scrollview寬高 = view寬高

  怎樣才能實現(xiàn)高效圖片輪播

  輪播原理

  假設(shè)輪播控件的寬度為x高度為y,我們設(shè)置scrollview的contentSize.width為3x,并讓scrollview的水平偏移量為x,既顯示最中間內(nèi)容

  scrollView.contentSize = CGSizeMake(3x, y); scrollView.contentOffset = CGPointMake(x, 0);

  怎樣才能實現(xiàn)高效圖片輪播

  將imageView添加到scrollview內(nèi)容視圖的中間位置

  怎樣才能實現(xiàn)高效圖片輪播

  接下來使用代理方法scrollViewDidScroll來監(jiān)聽scrollview的滾動,定義一個枚舉變量來記錄滾動的方向

  typedef enum{ DirecNone, DirecLeft, DirecRight } Direction;@property (nonatomic, assign) Direction direction; - (void)scrollViewDidScroll:(UIScrollView *)scrollView { self.direction = scrollView.contentOffset.x 》x? DirecLeft : DirecRight; }

  使用KVO來監(jiān)聽direction屬性值的改變

  [self addObserver:self forKeyPath:@“direction” options:NSKeyValueObservingOptionNew context:nil];

  判斷滾動的方向,當(dāng)偏移量大于x,表示左移,則將otherImageView加在右邊,偏移量小于x,表示右移,則將otherImageView加在左邊

  怎樣才能實現(xiàn)高效圖片輪播

  - (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context { //self.currIndex表示當(dāng)前顯示圖片的索引,self.nextIndex表示將要顯示圖片的索引 //_images為圖片數(shù)組 if(change[NSKeyValueChangeNewKey] == change[NSKeyValueChangeOldKey]) return; if ([change[NSKeyValueChangeNewKey] intValue] == DirecRight) { self.otherImageView.frame = CGRectMake(0, 0, self.width, self.height); self.nextIndex = self.currIndex - 1; if (self.nextIndex 《 0) self.nextIndex = _images.count – 1; } else if ([change[NSKeyValueChangeNewKey] intValue] == DirecLeft){ self.otherImageView.frame = CGRectMake(CGRectGetMaxX(_currImageView.frame), 0, self.width, self.height); self.nextIndex = (self.currIndex + 1) % _images.count; } self.otherImageView.image = self.images[self.nextIndex]; }

  通過代理方法scrollViewDidEndDecelerating來監(jiān)聽滾動結(jié)束,結(jié)束后,會變成以下兩種情況:

  怎樣才能實現(xiàn)高效圖片輪播

  此時,scrollview的偏移量為0或者2x,我們通過代碼再次將scrollview的偏移量設(shè)置為x,并將currImageView的圖片修改為otherImageView的圖片

  - (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView { [self pauseScroll]; } - (void)pauseScroll { self.direction = DirecNone;//清空滾動方向 //判斷最終是滾到了右邊還是左邊 int index = self.scrollView.contentOffset.x / x; if (index == 1) return; //等于1表示最后沒有滾動,返回不做任何操作 self.currIndex = self.nextIndex;//當(dāng)前圖片索引改變 self.pageControl.currentPage = self.currIndex; self.currImageView.frame = CGRectMake(x, 0, x, y); self.currImageView.image = self.otherImageView.image; self.scrollView.contentOffset = CGPointMake(x, 0); }

  那么我們看到的還是currImageView,只不過展示的是下一張圖片,如圖,又變成了最初的效果

  怎樣才能實現(xiàn)高效圖片輪播

  自動滾動

  輪播的功能實現(xiàn)了,接下來添加定時器讓它自動滾動,相當(dāng)簡單

  - (void)startTimer { //如果只有一張圖片,則直接返回,不開啟定時器 if (_images.count 《= 1) return; //如果定時器已開啟,先停止再重新開啟 if (self.timer) [self stopTimer]; self.timer = [NSTimer timerWithTimeInterval:self.time target:self selector:@selector(nextPage) userInfo:nil repeats:YES]; [[NSRunLoop currentRunLoop] addTimer:self.timer forMode:NSRunLoopCommonModes]; } - (void)nextPage { //動畫改變scrollview的偏移量就可以實現(xiàn)自動滾動 [self.scrollView setContentOffset:CGPointMake(self.width * 2, 0) animated:YES]; }

  注意:setContentOffset:animated:方法執(zhí)行完畢后不會調(diào)用scrollview的scrollViewDidEndDecelerating方法,但是會調(diào)用scrollViewDidEndScrollingAnimation方法,因此我們要在該方法中調(diào)用pauseScroll

  - (void)scrollViewDidEndScrollingAnimation:(UIScrollView *)scrollView { [self pauseScroll]; }

  拖拽時停止自動滾動

  當(dāng)我們手動拖拽圖片時,需要停止自動滾動,此時我們只需要讓定時器失效就行了,當(dāng)停止拖拽時,重新啟動定時器

  - (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView { [self.timer invalidate]; } - (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate{ [self startTimer]; }

非常好我支持^.^

(0) 0%

不好我反對

(0) 0%

怎樣才能實現(xiàn)高效圖片輪播下載

海量PCB软件教程下载 华强PCB技术中心,海量PCB软件教程下载!

相關(guān)電子資料下載

用戶評論

      ?
      主站蜘蛛池模板: 我年轻漂亮的继坶2中字在线播放 | a视频免费看| 国产成人在线网站 | 99久久免热在线观看6 | 成人国产精品玖玖热色欲 | 国产成人综合网在线观看 | 亚洲欧美综合中文字幕 | 国产综合视频在线观看一区 | 国产伦精品一区二区三区免费观看 | 国产乱码免费卡1卡二卡3卡四卡 | 黑人玩弄极品人妻系列 | 无码毛片内射白浆视频 | 亚洲伊人久久综合影院2021 | 幺妹视频福利视频 | 日韩视频在线观看 | 虫族bl文全肉高h | 国产在线播放KKK | 中文字幕亚洲乱码熟女在线萌芽 | 善良的小峓子2在钱中文版女主角 | 肉动漫无码无删减在线观看 | 全免费a级毛片免费看 | 大学生高潮无套内谢视频 | 色妹子综合 | www红色一片 | 国产精品久久久久久亚洲影视 | 天美传媒在线观看免费完整版 | 姉调无修版ova国语版 | 俄罗斯极品hd | 日韩欧美视频一区二区 | 韩国电影real在线观看完整版 | 久久免费高清 | 蜜芽一区二区国产精品 | 年轻的女教师2017韩国在线看 | 广播电台在线收听 | 在线不卡中文字幕 | a免费在线观看视频 | 午夜免费小视频 | 国产人成精品综合欧美成人 | 久久99亚洲AV无码四区碰碰 | 披黑人猛躁10次高潮 | 色偷偷成人网免费视频男人的天堂 |