UIScrollView迴圈滾動1,uiscrollview滾動

來源:互聯網
上載者:User

UIScrollView迴圈滾動1,uiscrollview滾動

現在基本每一個商業APP都會有迴圈滾動視圖,放一些輪播廣告之類的,都是放在UIScrollView之上。假如我要實現N張圖片的輪播,我借鑒了幾個博文,得到兩種方法實現:

【第一種】:如(圖片來源於kenshin cui‘s的部落格),假如要實現3張圖片輪播,我們就設定UIScrollView上的imageView為3+2個,圖片順序為31231。

初始載入UIScrollView時候,滾動到第二個imageView上。

當滾動到最後一個imageview時候,設定UIScrollView的ContentOffset到第二個imageView。

當往前滾動到第一個imageview時候,設定UIScrollView的ContentOffset到倒數第二個imageview。

具體代碼如下:

 1 #import "ViewController.h" 2 //定義宏,擷取螢幕寬高 3 #define SCREEN_WIDTH [UIScreen mainScreen].bounds.size.width 4 #define SCREEN_HEIGHT [UIScreen mainScreen].bounds.size.height 5  6 @interface ViewController ()<UIScrollViewDelegate> 7 /** 滾動視圖*/ 8 @property (nonatomic,strong)UIScrollView *scrollView; 9 /** 圖片數組*/10 @property (nonatomic,strong)NSMutableArray *imageArray;11 @end12 13 @implementation ViewController14 //懶載入滾動視圖15 -(UIScrollView *)scrollView{16     if (!_scrollView) {17         _scrollView = [[UIScrollView alloc]init];18     }19     return _scrollView;20 }21 //懶載入圖片數組22 -(NSMutableArray *)imageArray{23     if (!_imageArray) {24         _imageArray = [NSMutableArray array];25     }26     return _imageArray;27 }28 29 30 - (void)viewDidLoad {31     [super viewDidLoad];32     //先載入圖片33     [self loadImageArray];34     //再設定滾動視圖35     [self setupScrollview];36 }37 //載入圖片,假設有3張圖片 welcome1 welcome2 welcome338 -(void)loadImageArray{39     for (NSInteger i = 0 ; i<3; i++) {40         UIImage *image = [UIImage imageNamed:[NSString stringWithFormat:@"welcome%ld",i+1]];41         [self.imageArray addObject:image];42     }43 }44 //設定scrollview45 -(void)setupScrollview{46     //設定可見地區47     self.scrollView.frame = self.view.bounds;48     //設定容量49     self.scrollView.contentSize = CGSizeMake(SCREEN_WIDTH*(self.imageArray.count + 2), SCREEN_HEIGHT);50     //翻頁模式51     self.scrollView.pagingEnabled = YES;52     //代理53     self.scrollView.delegate = self;54     //邊緣不能彈跳55     self.scrollView.bounces = NO;56     //隱藏水平捲軸57     self.scrollView.showsHorizontalScrollIndicator = NO;58     [self.view addSubview:self.scrollView];59     //迴圈添加imageView60     for (NSInteger i = 0; i < self.imageArray.count + 2; i++) {61         UIImageView *imageView = [[UIImageView alloc]initWithFrame:CGRectMake(i *SCREEN_WIDTH, 0, SCREEN_WIDTH, SCREEN_HEIGHT)];62         if (i == 0) {//0->lastObject63             imageView.image = self.imageArray.lastObject;64         }else if (i == self.imageArray.count + 1){//4->firstObject65             imageView.image = self.imageArray.firstObject;66         }else{//1->0 2->1 3->267             imageView.image = self.imageArray[i-1];68         }69         [self.scrollView addSubview:imageView];70     }71     //設定初始滾動的位置為第二個imageView72     self.scrollView.contentOffset = CGPointMake(SCREEN_WIDTH, 0);73 }74 //當停止滾動時候,重新設定 scrollview的ContentOffset75 -(void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView{76     CGPoint point = scrollView.contentOffset;77     if (point.x/SCREEN_WIDTH > self.imageArray.count) {//當滾動到最後的時候78         [self.scrollView setContentOffset:CGPointMake(SCREEN_WIDTH, 0) animated:NO];79     }else if (point.x/SCREEN_WIDTH < 1){//當滾動到最前的時候80         [self.scrollView setContentOffset:CGPointMake(SCREEN_WIDTH*self.imageArray.count, 0) animated:NO];81     }82 }

可以建立項目,直接複製該代碼,在loadImageArray方法裡面修改成載入自己的圖片,運行即可。

【第二種】:假如有100張圖片或者更多,就得載入100+2個imageview,顯然對效能要求就得更高,因此衍生出了第二種。

就是無論你有多少張圖片,imageview始終只有3個。

無論你怎麼滾動,當滾動完畢的時候,UIScrollView的ContentOffset都是中間的一個imageview。

只是我們在UIScrollView的代理方法裡面不斷改變每一個imageview.image的圖片而已。

第二種源碼我會在後續博文補充。

其實,這個迴圈滾動學的不是會敲代碼,而是一種思路。

最後推薦一個github很好用的類似第三方類庫SDCycleScrollView,星星兩千多,很不錯。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.