亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

swift實(shí)現(xiàn)自動(dòng)輪播圖效果(UIScrollView+UIPageControl+Timer)

 更新時(shí)間:2017年09月29日 11:11:40   作者:稻草人11223  
這篇文章主要為大家詳細(xì)介紹了swift實(shí)現(xiàn)自動(dòng)輪播圖效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了swift實(shí)現(xiàn)自動(dòng)輪播圖效果的具體代碼,供大家參考,具體內(nèi)容如下

比較簡(jiǎn)單,原理就不說(shuō)了,這里只做記錄:

代碼如下:

1、準(zhǔn)備

var pageControl:UIPageControl?
 var myscrollView:UIScrollView?
 var myTimer:Timer?
 var mycurrentPage:NSInteger?
 
 
 var courses = [
  ["name":"first","pic":"1.jpeg"],
  ["name":"second","pic":"2.jpeg"],
  ["name":"third","pic":"3.jpeg"]
 ]

2、內(nèi)容的添加

 //添加scrollview
  self.addScrollView()
  //添加圖片
  self.addImages()
  //添加pagecontrol
  self.addPageControl()
  
  mycurrentPage = 1
  
  //添加定時(shí)器
  self.setupTimer()

具體方法:

func addScrollView(){
  self.myscrollView = UIScrollView()
  self.myscrollView?.frame = CGRect(x:0,y:0,width:kScreenWidth,height:kScreenHeight/2)
  self.myscrollView?.contentSize = CGSize(width:kScreenWidth*3,height:kScreenHeight/2)
  self.myscrollView?.showsHorizontalScrollIndicator = false
  self.myscrollView?.showsVerticalScrollIndicator = false
  self.myscrollView?.scrollsToTop = false
  self.myscrollView?.delegate = self
  self.myscrollView?.isPagingEnabled = true
  self.view.addSubview(self.myscrollView!)

 }
 
 func addImages(){
  let size = self.myscrollView?.bounds.size
  for (seq,course) in courses.enumerated() {
   let page = UIView(frame:CGRect(x:0,y:64,width:kScreenWidth,height:kScreenHeight/2))
   let imageView=UIImageView(image:UIImage(named:course["pic"]!))
   imageView.frame = page.frame
   page.addSubview(imageView)
   page.backgroundColor = UIColor.gray
   let lab1 = UILabel(frame:CGRect(x:15,y:kScreenHeight/2-100,width:kScreenWidth-30,height:40))
   lab1.textAlignment = .center
   lab1.backgroundColor = UIColor.red
   lab1.text = course["name"]
   page.addSubview(lab1)
   
   page.frame = CGRect(x:CGFloat(seq)*(size?.width)!,y:0,width:(size?.width)!,height:(size?.height)!)
   self.myscrollView?.addSubview(page)
   
  }
 }
 
 func addPageControl(){
  self.pageControl = UIPageControl(frame:CGRect(x:kScreenWidth/2-50/2,y:kScreenHeight/2-40,width:50,height:35))
  self.pageControl?.backgroundColor = UIColor.blue
  self.pageControl?.numberOfPages = courses.count
  self.view.addSubview(self.pageControl!)
 }
 
 func setupTimer() {
  self.myTimer = Timer.init(timeInterval: 2.0, target: self, selector: #selector(timerAction), userInfo: nil, repeats: true)
  RunLoop.main.add(self.myTimer!, forMode: RunLoopMode.defaultRunLoopMode)
  
//  DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + 2) { 
//   self.myTimer?.fire()
//  }
  
 }
 
 func closeTimer(){
  self.myTimer?.invalidate()
  self.myTimer = nil
 }
 
 func timerAction(){
  self.pageControl?.currentPage += mycurrentPage!
  
  if self.pageControl?.currentPage == 0 || self.pageControl?.currentPage == 2 {
   mycurrentPage = -mycurrentPage!
  }
  self.myscrollView?.contentOffset = CGPoint(x:CGFloat(kScreenWidth)*CGFloat((pageControl?.currentPage)!),y:0)
 }

3、一些代理方法的實(shí)現(xiàn),手動(dòng)拖動(dòng)的時(shí)候,銷(xiāo)毀定時(shí)器,節(jié)省內(nèi)存

internal func scrollViewDidEndDecelerating(_ scrollView: UIScrollView) {
  let page = Int(scrollView.contentOffset.x/scrollView.frame.size.width)
  self.pageControl?.currentPage = page
  
 }
 
 func scrollViewWillBeginDragging(_ scrollView: UIScrollView) {
  self.closeTimer()
 }
 
 func scrollViewDidEndDragging(_ scrollView: UIScrollView, willDecelerate decelerate: Bool) {
  self.setupTimer()
 }
 
 func scrollViewWillBeginDecelerating(_ scrollView: UIScrollView) {
  self.pageControl?.currentPage = Int(scrollView.contentOffset.x/kScreenWidth)
 }

效果如下:

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 詳解Swift中的數(shù)據(jù)類(lèi)型類(lèi)型轉(zhuǎn)換

    詳解Swift中的數(shù)據(jù)類(lèi)型類(lèi)型轉(zhuǎn)換

    Swift中的類(lèi)型轉(zhuǎn)換可以結(jié)合類(lèi)的繼承等面向?qū)ο蟮木幊烫匦詠?lái)進(jìn)行,本文中我們就來(lái)詳解Swift中的數(shù)據(jù)類(lèi)型類(lèi)型轉(zhuǎn)換,需要的朋友可以參考下
    2016-07-07
  • Swift?enum枚舉類(lèi)型使用詳解

    Swift?enum枚舉類(lèi)型使用詳解

    這篇文章主要為大家介紹了Swift?enum枚舉類(lèi)型的使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-11-11
  • Swift中的指針操作詳解

    Swift中的指針操作詳解

    從傳統(tǒng)的C代碼和與之無(wú)縫配合的Objective-C代碼遷移到Swift并非小工程,我們的代碼庫(kù)肯定會(huì)時(shí)不時(shí)出現(xiàn)一些和C協(xié)作的地方,如果想要繼續(xù)使用那些C API的話(huà),了解一些基本的Swift指針操作和使用的知識(shí)會(huì)很有幫助。下面通過(guò)這篇文章一起來(lái)學(xué)習(xí)下吧。
    2017-01-01
  • Swift UIButton使用教程

    Swift UIButton使用教程

    這篇文章主要介紹了Swift UIButton的使用方法,幫助大家更好的理解和學(xué)習(xí)swift編程,感興趣的朋友可以了解下
    2020-09-09
  • Swift中的命名空間詳解

    Swift中的命名空間詳解

    這篇文章主要給大家介紹了關(guān)于Swift中命名空間的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2018-12-12
  • Swift流程控制之循環(huán)語(yǔ)句和判斷語(yǔ)句詳解

    Swift流程控制之循環(huán)語(yǔ)句和判斷語(yǔ)句詳解

    這篇文章主要介紹了Swift流程控制之循環(huán)語(yǔ)句和判斷語(yǔ)句詳解,文中還使用了一個(gè)游戲例子來(lái)講解循環(huán)語(yǔ)句和判斷語(yǔ)句的使用,需要的朋友可以參考下
    2014-07-07
  • Swift教程之基礎(chǔ)數(shù)據(jù)類(lèi)型詳解

    Swift教程之基礎(chǔ)數(shù)據(jù)類(lèi)型詳解

    這篇文章主要介紹了Swift教程之基礎(chǔ)數(shù)據(jù)類(lèi)型詳解,本文詳細(xì)講解了Swift中的基本數(shù)據(jù)類(lèi)型和基本語(yǔ)法,例如常量和變量、注釋、分號(hào)、整數(shù)、數(shù)值類(lèi)型轉(zhuǎn)換等內(nèi)容,需要的朋友可以參考下
    2015-01-01
  • Swift中優(yōu)雅處理閉包導(dǎo)致的循環(huán)引用詳解

    Swift中優(yōu)雅處理閉包導(dǎo)致的循環(huán)引用詳解

    這篇文章主要給大家介紹了關(guān)于Swift中優(yōu)雅的處理閉包導(dǎo)致的循環(huán)引用的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Swift具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • swift 字符串String的使用方法

    swift 字符串String的使用方法

    這篇文章主要介紹了swift 字符串String的使用方法的相關(guān)資料,需要的朋友可以參考下
    2017-06-06
  • swift實(shí)現(xiàn)隨機(jī)背景色

    swift實(shí)現(xiàn)隨機(jī)背景色

    這篇文章主要為大家詳細(xì)介紹了swift實(shí)現(xiàn)隨機(jī)背景色,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-01-01

最新評(píng)論