麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 系統 > iOS > 正文

iOS使用UIScrollView實現無限循環輪播圖效果

2019-10-21 18:40:17
字體:
來源:轉載
供稿:網友

本文實例為大家分享了iOS使用UIScrollView實現無限循環輪播圖的具體代碼,供大家參考,具體內容如下

iOS,UIScrollView,輪播圖

代碼:

 

//// ViewController.m// 無限輪播//// Created by limin on 17/8/23.// Copyright © 2017年 none. All rights reserved.// #import "ViewController.h" @interface ViewController ()<UIScrollViewDelegate>/* 定時器 */@property(nonatomic,strong)NSTimer *rotateTimer;/* */@property(nonatomic,strong)UIPageControl *myPageControl;@end @implementation ViewController - (void)viewDidLoad {  [super viewDidLoad];  //初始化scroolview大小為屏幕大小  UIScrollView *rotateScrollView = [[UIScrollView alloc]initWithFrame:self.view.frame];  //設置滾動范圍  rotateScrollView.contentSize = CGSizeMake(CGRectGetWidth(self.view.frame)*3, CGRectGetHeight(self.view.frame));  //設置分頁效果  rotateScrollView.pagingEnabled = YES;  //水平滾動條隱藏  rotateScrollView.showsHorizontalScrollIndicator = NO;  //添加三個子視圖,uilabel類型  for (int i=0; i<3; i++) {    UILabel *subLabel = [[UILabel alloc] initWithFrame:CGRectMake(CGRectGetWidth(self.view.frame)*i, 0, CGRectGetWidth(self.view.frame), CGRectGetHeight(self.view.frame))];    subLabel.tag = 1000+i;    subLabel.text = [NSString stringWithFormat:@"我是第%d個視圖",i];    [subLabel setFont:[UIFont systemFontOfSize:80]];    subLabel.adjustsFontSizeToFitWidth = YES;    [subLabel setBackgroundColor:[UIColor colorWithRed:arc4random()%256/255.0 green:arc4random()%256/255.0 blue:arc4random()%256/255.0 alpha:1.0]];    [rotateScrollView addSubview:subLabel];   }  UILabel *tempLabel = [rotateScrollView viewWithTag:1000];  //為滾動視圖的右邊添加一個視圖,使得它和第一個視圖一模一樣。  UILabel *label = [[UILabel alloc]initWithFrame:CGRectMake(CGRectGetWidth(self.view.frame)*3, 0, CGRectGetWidth(self.view.frame), CGRectGetHeight(self.view.frame))];  label.backgroundColor = tempLabel.backgroundColor;  label.text = tempLabel.text;  label.font = tempLabel.font;  label.adjustsFontSizeToFitWidth = YES;  [rotateScrollView addSubview:label];  [self.view addSubview:rotateScrollView];  rotateScrollView.tag = 1000;  self.myPageControl = [[UIPageControl alloc]initWithFrame:CGRectMake(0, CGRectGetHeight(self.view.frame)-50, CGRectGetWidth(self.view.frame), 50)];  self.myPageControl.numberOfPages = 3;  self.myPageControl.currentPage = 0;  [self.view addSubview:self.myPageControl];    //啟動定時器  self.rotateTimer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(changeView) userInfo:nil repeats:YES];  //為滾動視圖指定代理  rotateScrollView.delegate = self;} #pragma mark -- 滾動視圖的代理方法//開始拖拽的代理方法,在此方法中暫停定時器。-(void)scrollViewWillBeginDragging:(UIScrollView *)scrollView{  NSLog(@"正在拖拽視圖,所以需要將自動播放暫停掉");  //setFireDate:設置定時器在什么時間啟動  //[NSDate distantFuture]:將來的某一時刻  [self.rotateTimer setFireDate:[NSDate distantFuture]];} //視圖靜止時(沒有人在拖拽),開啟定時器,讓自動輪播- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView{  //視圖靜止之后,過1.5秒在開啟定時器  //[NSDate dateWithTimeInterval:1.5 sinceDate:[NSDate date]] 返回值為從現在時刻開始 再過1.5秒的時刻。  NSLog(@"開啟定時器");  [self.rotateTimer setFireDate:[NSDate dateWithTimeInterval:1.5 sinceDate:[NSDate date]]];}  //定時器的回調方法  切換界面- (void)changeView{  //得到scrollView  UIScrollView *scrollView = [self.view viewWithTag:1000];  //通過改變contentOffset來切換滾動視圖的子界面  float offset_X = scrollView.contentOffset.x;  //每次切換一個屏幕  offset_X += CGRectGetWidth(self.view.frame);    //說明要從最右邊的多余視圖開始滾動了,最右邊的多余視圖實際上就是第一個視圖。所以偏移量需要更改為第一個視圖的偏移量。  if (offset_X > CGRectGetWidth(self.view.frame)*3) {    scrollView.contentOffset = CGPointMake(0, 0);      }  //說明正在顯示的就是最右邊的多余視圖,最右邊的多余視圖實際上就是第一個視圖。所以pageControl的小白點需要在第一個視圖的位置。  if (offset_X == CGRectGetWidth(self.view.frame)*3) {    self.myPageControl.currentPage = 0;  }else{    self.myPageControl.currentPage = offset_X/CGRectGetWidth(self.view.frame);  }    //得到最終的偏移量  CGPoint resultPoint = CGPointMake(offset_X, 0);  //切換視圖時帶動畫效果  //最右邊的多余視圖實際上就是第一個視圖,現在是要從第一個視圖向第二個視圖偏移,所以偏移量為一個屏幕寬度  if (offset_X >CGRectGetWidth(self.view.frame)*3) {    self.myPageControl.currentPage = 1;    [scrollView setContentOffset:CGPointMake(CGRectGetWidth(self.view.frame), 0) animated:YES];  }else{    [scrollView setContentOffset:resultPoint animated:YES];  }  } - (void)didReceiveMemoryWarning {  [super didReceiveMemoryWarning];  // Dispose of any resources that can be recreated.}  @end

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


注:相關教程知識閱讀請移步到IOS開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 性爱视频在线免费 | 亚洲最大中文字幕 | 91成人免费在线观看 | 黄色片观看 | 夜夜夜精品视频 | 国产午夜精品久久久 | 亚洲视色| 精品国产乱码一区二区 | wwwcom国产 | 成人444kkkk在线观看 | 黄色a级片视频 | 失禁高潮抽搐喷水h | 久草最新 | 国产成人精品免费视频大全最热 | 青热久思思 | 羞羞的视频 | 特级黄色影院 | 久久久久久久久国产精品 | 91香蕉国产亚洲一区二区三区 | 久久久久久免费 | 亚洲免费毛片基地 | 成人 在线 | 91av久久| 午夜国产成人 | 国产精品v片在线观看不卡 成人一区二区三区在线 | 7777久久香蕉成人影院 | 欧美一级欧美 | sese在线视频| 亚洲第一成人在线观看 | 男女无遮挡羞羞视频 | 一本色道久久综合狠狠躁篇适合什么人看 | 精品国产视频一区二区三区 | 国产精品av久久久久久久久久 | 91短视频在线视频 | 销魂美女一区二区 | 欧美一极视频 | 香蕉久久久久久 | 国产精品自拍99 | 视频一区二区在线观看 | 国产精品视频导航 | 国产二区三区在线播放 |