亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 系統 > iOS > 正文

iOS利用UIScrollView實現無限滾動效果

2020-07-26 03:03:06
字體:
來源:轉載
供稿:網友

前言

眾所周知UIScrollView 的無限滾動主要應用在圖片輪播器、歡迎界面等場景。它的原理是在要顯示的圖片前后各加一張圖片即在第一張圖片之前放最后一張圖片,在最后一張圖片之后放第一張圖片,然后在滾動到邊緣的時候,巧妙的過渡一下就可以"瞞天過海","以假亂真"的造成無限滾動的假象。網絡上有很多只用三張或兩張圖片實現的方法,效率比這個方法高,但實現起來稍微麻煩一點,有興趣的可以去深入研究。

實現步驟

      1、根據需求準備幾張圖片,在網上找了5張圖片,分別命名為 img_01,img_02,img_03,img_04,img_05 。

      2、代碼實現,主要分為:添加UIScrollView,添加顯示圖片,添加UIPageControl,然后監聽UIScrollView的滾動,根據滾動的位置來設置UIPageControl,最重要的是對于滾動到兩個邊緣時要特殊處理一下

代碼如下:

#import "ViewController.h"http://屏幕寬度#define SCREEN_WIDTH [UIScreen mainScreen].bounds.size.width//圖片高度#define IMG_HEIGHT 180//要顯示的圖片總數#define MAX_SIZE 7#import "ViewController.h"@interface ViewController () <UIScrollViewDelegate>//滾動視圖@property (strong, nonatomic) UIScrollView *loopScrollView;//指示器@property (strong, nonatomic) UIPageControl *pageIndicator;//要展示的圖片數組@property(strong, nonatomic) NSMutableArray *imgArray;@end@implementation ViewController//懶加載數組-(NSMutableArray *)imgArray{  if(_imgArray == nil)  {    _imgArray = [[NSMutableArray alloc]initWithCapacity:MAX_SIZE];    //在要展示的5張圖片的前后各加一張圖片,第一張前面加第五張,第五張后面加第一張    [_imgArray addObject:[UIImage imageNamed:@"img_05.jpg"]];    for (int i = 1; i< MAX_SIZE - 1; i++) {      NSString *imgName = [[NSString alloc]initWithFormat:@"img_0%d.jpg", i];      [_imgArray addObject:[UIImage imageNamed:imgName]];    }    [_imgArray addObject:[UIImage imageNamed:@"img_01.jpg"]];  }  return _imgArray;}- (void)viewDidLoad {  [super viewDidLoad];  [self setupScrollView];  [self setupPageControl];}/** * 創建UIScrollView并設置其屬性 */-(void)setupScrollView{  UIScrollView *sc = [[UIScrollView alloc]initWithFrame:CGRectMake(0, 64, SCREEN_WIDTH, IMG_HEIGHT)];  //創建UIImageView并添加到UIScrollView中  for (int i = 0; i< MAX_SIZE; i++) {    UIImageView *img = [[UIImageView alloc]initWithImage:[self.imgArray objectAtIndex:i]];    img.frame = CGRectMake(SCREEN_WIDTH * i, 0, SCREEN_WIDTH, IMG_HEIGHT);    [sc addSubview:img];  }  //設置UIScrollView的屬性  sc.contentSize = CGSizeMake(SCREEN_WIDTH * self.imgArray.count, IMG_HEIGHT);  sc.showsHorizontalScrollIndicator = NO;  sc.pagingEnabled = YES;  //剛開始應該滾動到第二張顯示,因為第一張其實是最后一張圖片  [sc setContentOffset:CGPointMake(SCREEN_WIDTH, 0) animated:NO];  //設置代理并添加到當前view中  sc.delegate = self;  [self.view addSubview:sc];  self.loopScrollView = sc;}/** * 創建UIPageControl并設置其屬性 */-(void)setupPageControl{  //注意frame,這樣設置可以居中顯示  UIPageControl *pc = [[UIPageControl alloc]initWithFrame:CGRectMake(self.view.center.x - 50, CGRectGetMaxY(self.loopScrollView.frame) - 25 , 100, 25)];  //設置UIPageControl的屬性并添加到當前view中  pc.numberOfPages = MAX_SIZE - 2;  pc.currentPage = 0;  pc.pageIndicatorTintColor = [UIColor redColor];  [self.view addSubview:pc];  self.pageIndicator = pc;}//UIScrollView的代理方法,在該方法中改變UIPageControl并且處理邊緣滾動-(void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView{  //獲取當前UIScrollView的位置  CGPoint offset = [scrollView contentOffset];  //算出滾動到第幾頁  int currentPage = offset.x/SCREEN_WIDTH;  //設置UIPageControl  self.pageIndicator.currentPage = currentPage - 1;  //對最后一張和第一張要進行特殊處理  //1、如果是第一張  if (currentPage == 0) {    //下面兩個方法任選其一都可以達到效果,但是注意動畫一定要設置為NO,不然會有視覺會有辣眼睛的感覺    //方法1    [self.loopScrollView setContentOffset:CGPointMake(SCREEN_WIDTH * (MAX_SIZE-2), 0) animated:NO];    //方法2,該方法要求設置contentSize時,任一方向就算不滾動也不能為0,否則無效    //[self.loopScrollView scrollRectToVisible:CGRectMake(SCREEN_WIDTH * (MAX_SIZE-2), 0, SCREEN_WIDTH, IMG_HEIGHT) animated:NO];    self.pageIndicator.currentPage = MAX_SIZE - 2;  }  //2、如果是最后一張  else if(currentPage == MAX_SIZE - 1) {    [self.loopScrollView setContentOffset:CGPointMake(SCREEN_WIDTH, 0) animated:NO];    //[self.loopScrollView scrollRectToVisible:CGRectMake(SCREEN_WIDTH, 0, SCREEN_WIDTH, IMG_HEIGHT) animated:NO];    self.pageIndicator.currentPage = 0;  }}@end

實現效果

總結

好了,以上就是這篇文章的全部內容了,其實實現輪播現在最好的方案應該是使用UICollectionView,因為它是利用重用機制來實現的,性能會好很多,代碼寫起來類似。希望本文的內容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩av在线网址| 国产精品91在线| 亚洲2020天天堂在线观看| 日韩中文第一页| 国产自摸综合网| 久99久在线视频| 91亚洲午夜在线| 亚洲一区二区中文| 日韩av电影手机在线观看| 亚洲一区二区三区香蕉| 欧美一级片在线播放| 国产精品海角社区在线观看| 亚洲欧美制服另类日韩| 国产精品日韩在线| 成人夜晚看av| 日韩精品中文在线观看| 国产成人短视频| 成人看片人aa| 俺也去精品视频在线观看| 国模精品视频一区二区| 日韩精品在线观看网站| 色婷婷综合久久久久中文字幕1| 成人美女av在线直播| 久久久这里只有精品视频| 亚洲午夜精品久久久久久久久久久久| 精品久久久久久久久久国产| 日韩精品有码在线观看| 亚洲精品国产美女| 国产精品久久久久久亚洲调教| 国产99久久久欧美黑人| 亚洲精品电影在线观看| 日韩禁在线播放| 国产一区二区丝袜高跟鞋图片| 欧美电影免费观看电视剧大全| 国产成人一区二区三区小说| 国产精品伦子伦免费视频| 午夜伦理精品一区| 亚洲欧美在线一区| 97国产精品人人爽人人做| 久久久久久久成人| 国产精品国产三级国产专播精品人| 精品动漫一区二区三区| 中文字幕av一区中文字幕天堂| 91久久夜色精品国产网站| 亚洲国产成人精品一区二区| 国产精品久久久久久久久男| 麻豆国产va免费精品高清在线| 亚洲黄色在线看| 欧美激情高清视频| 亚洲无限av看| 九色精品美女在线| 一区二区中文字幕| 欧美野外猛男的大粗鳮| 性欧美办公室18xxxxhd| 国产成人精品亚洲精品| 97免费在线视频| 视频直播国产精品| 97视频网站入口| 国内揄拍国内精品少妇国语| 精品偷拍一区二区三区在线看| 久久久久在线观看| 精品久久中文字幕久久av| 欧美美女操人视频| 久久精品视频中文字幕| 国产精品视频最多的网站| 在线播放日韩专区| 亚洲欧美日韩中文在线制服| 成人午夜在线观看| 国产一区二区在线播放| 日本在线观看天堂男亚洲| 久久九九精品99国产精品| 亚洲裸体xxxx| 97av在线视频免费播放| 午夜精品一区二区三区av| 国产精品成人一区| 国产成人精品免高潮在线观看| 国产欧美一区二区三区久久| 欧美综合在线观看| 国产欧美精品日韩精品| 亚洲成人黄色网| 亚洲国产美女精品久久久久∴| 成人免费网站在线观看| 欧美大胆在线视频| 欧美黄色三级网站| 全色精品综合影院| 亚洲老头老太hd| 中国人与牲禽动交精品| 亚洲成人a级网| 日韩电影在线观看永久视频免费网站| 国产91精品青草社区| 91中文在线观看| 亚洲女人天堂色在线7777| 精品久久久久国产| 日韩av在线免播放器| 亚洲日本aⅴ片在线观看香蕉| 久久久av电影| 日韩欧美综合在线视频| 国产在线视频2019最新视频| 精品国产91久久久久久老师| 成人亚洲欧美一区二区三区| 精品性高朝久久久久久久| 色777狠狠综合秋免鲁丝| 国产精品美女网站| www.久久久久| 一区二区三区 在线观看视| 91在线视频一区| 成人午夜在线视频一区| 亚洲欧美国产一本综合首页| 国产精品中文在线| 中文字幕日韩有码| 国产精品精品久久久久久| 亚洲黄色在线看| 欧美日韩国产精品一区| 久久久电影免费观看完整版| 亚洲欧洲在线免费| 国产精品成人品| 国内精品一区二区三区四区| 日韩男女性生活视频| 日韩美女视频中文字幕| 日韩在线中文视频| 日韩精品日韩在线观看| 日韩欧美亚洲范冰冰与中字| 亚洲娇小xxxx欧美娇小| 国产精品一区av| 国产精品女主播视频| 97碰在线观看| 国产日产欧美精品| 久久天天躁狠狠躁老女人| 久久久久北条麻妃免费看| 日韩免费在线播放| 久久久久久高潮国产精品视| 国产在线观看91精品一区| 久久激情视频免费观看| 久久影视三级福利片| 国产91av在线| 日韩亚洲欧美中文高清在线| 91精品国产高清久久久久久91| 国内伊人久久久久久网站视频| 欧美在线亚洲一区| 亚洲女人天堂色在线7777| 亚洲色图综合网| 欧美性猛交xxxx免费看漫画| 国产精品久久久久久久久久久久久久| 久久韩国免费视频| 日本在线精品视频| 国产精品99蜜臀久久不卡二区| 激情av一区二区| 欧美xxxx14xxxxx性爽| 78色国产精品| 国产精品免费视频久久久| 亚洲最大的网站| 亚洲一区二区国产| 日韩成人在线视频观看| 中文字幕亚洲色图| 亚洲一区二区三区视频播放| 久久久久久久久亚洲| 久久久久久久久久国产精品| 亚洲毛片在线看| 国内精品美女av在线播放| 亚洲国产精品专区久久| 欧美精品videofree1080p| 亚洲国产福利在线| 91免费看国产| 欧美日韩国产综合新一区|