欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Swift3.0 GCD定時器的使用DEMO

 更新時間:2017年02月22日 10:28:27   作者:Stevin三天三夜的專欄  
這篇文章主要介紹了Swift3.0 GCD定時器的使用,實現(xiàn)倒計時,UIDatePicker的使用, 仿寫一個活動倒計時的DEMO,需要的朋友可以參考下

 直接看主要代碼

//截止日期
let endDate = datePicker.date
//開始日期
let startDate = Date()
//時間間隔
let timeInterval:TimeInterval = endDate.timeIntervalSince(startDate)
if timer == nil {
 //剩余時間
 var timeout = timeInterval
 if timeout != 0 {
 //創(chuàng)建全局隊列
 let queue = DispatchQueue.global()
 //在全局隊列下創(chuàng)建一個時間源
 timer = DispatchSource.makeTimerSource(flags: [], queue: queue)
 //設(shè)定循環(huán)的間隔是一秒,并且立即開始
 timer?.scheduleRepeating(wallDeadline: DispatchWallTime.now(), interval: .seconds(1))
 //時間源出發(fā)事件
 timer?.setEventHandler(handler: {
  //必須是當(dāng)前日期往后的日期,在datePicker上也做了限制
  if timeout <= 0 {
  self.timer?.cancel()
  self.timer = nil
  DispatchQueue.main.async(execute: {
   self.day.text = "00"
   self.hour.text = "00"
   self.minute.text = "00"
   self.second.text = "00"
  })
  } else {
  //計算剩余時間
  let days = Int(timeout) / (3600 * 24)
  if days == 0 {
   self.day.text = ""
  }
  let hours = (Int(timeout) - Int(days) * 24 * 3600) / 3600
  let minutes = (Int(timeout) - Int(days) * 24 * 3600 - Int(hours) * 3600) / 60
  let seconds = Int(timeout) - Int(days) * 24 * 3600 - Int(hours) * 3600 - Int(minutes) * 60
  //主隊列中刷新UI
  DispatchQueue.main.async(execute: {
   if days == 0 {
   self.day.text = "0"
   } else {
   self.day.text = "\(days)"
   }
   if hours < 10 {
   self.hour.text = "0" + "\(hours)"
   } else {
   self.hour.text = "\(hours)"
   }
   if minutes < 10 {
   self.minute.text = "0" + "\(minutes)"
   } else {
   self.minute.text = "\(minutes)"
   }
   if seconds < 10 {
   self.second.text = "0" + "\(seconds)"
   } else {
   self.second.text = "\(seconds)"
   }
  })
  timeout -= 1
  }
 })
 //啟動時間源
 timer?.resume()
 }
}

DEMO效果圖

這里寫圖片描述

DEMO下載地址

相關(guān)文章

  • 深入解析Swift編程中的構(gòu)造方法

    深入解析Swift編程中的構(gòu)造方法

    先進(jìn)的Swfit語言同樣具有構(gòu)造方法,構(gòu)造方法在對象被創(chuàng)建后會首先被調(diào)用,這里我們就來深入解析Swift編程中的構(gòu)造方法:
    2016-07-07
  • 深入探究Swift枚舉關(guān)聯(lián)值的內(nèi)存

    深入探究Swift枚舉關(guān)聯(lián)值的內(nèi)存

    這篇文章主要給大家介紹了關(guān)于Swift枚舉關(guān)聯(lián)值的內(nèi)存的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者使用Swift具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • swift如何利用系統(tǒng)庫將漢字轉(zhuǎn)換為拼音詳解

    swift如何利用系統(tǒng)庫將漢字轉(zhuǎn)換為拼音詳解

    將漢字轉(zhuǎn)換為拼音更利于我們大家開發(fā)搜索功能,所以這篇文章主要給大家介紹了關(guān)于swift如何利用系統(tǒng)庫將漢字轉(zhuǎn)換為拼音的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-10-10
  • Swift重構(gòu)自定義空等運(yùn)算符 “??=” 實例

    Swift重構(gòu)自定義空等運(yùn)算符 “??=” 實例

    這篇文章主要為大家介紹了Swift重構(gòu)自定義空等運(yùn)算符 “??=” 實例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-03-03
  • 使用swift實現(xiàn)計算器功能

    使用swift實現(xiàn)計算器功能

    這篇文章主要為大家詳細(xì)介紹了使用swift實現(xiàn)計算器功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • SpringBoot3.0集成Redis緩存的實現(xiàn)示例

    SpringBoot3.0集成Redis緩存的實現(xiàn)示例

    緩存就是一個存儲器,常用 Redis作為緩存數(shù)據(jù)庫,本文主要介紹了SpringBoot3.0集成Redis緩存的實現(xiàn)示例,具有一定的參考價值,感興趣的可以了解一下
    2024-03-03
  • Swift利用CoreData實現(xiàn)一個通訊錄存儲詳解

    Swift利用CoreData實現(xiàn)一個通訊錄存儲詳解

    這篇文章主要給大家介紹了關(guān)于Swift利用CoreData實現(xiàn)一個通訊錄存儲的相關(guān)資料,本文是大家學(xué)習(xí)coreDate的基礎(chǔ)問題,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-12-12
  • 簡單了解Swift語言中的break和continue語句的用法

    簡單了解Swift語言中的break和continue語句的用法

    這篇文章主要簡單介紹了Swift語言中的break和continue語句的用法,與其他語言的一樣用于循環(huán)語句流程控制,需要的朋友可以參考下
    2015-11-11
  • 解決 Xcode 6-Beta2 智能提示bug

    解決 Xcode 6-Beta2 智能提示bug

    最近開始學(xué)習(xí) Swift ,因為感覺這個真是個不錯的東西,有很多新的特性,雖然 Titanium 之后也必定會支持,但總有不少東西要使用原生開發(fā)才可以實現(xiàn),所以就乘這個新語言出來之際開始學(xué)習(xí)啦!
    2014-07-07
  • iOS開發(fā)中Swift 指紋驗證功能模塊實例代碼

    iOS開發(fā)中Swift 指紋驗證功能模塊實例代碼

    本文給大家分享ios調(diào)用touchid代碼塊,非常不錯,具有參考借鑒價值,需要的朋友參考下把
    2017-03-03

最新評論