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

swift計(jì)步器CMPedometer的使用方法

 更新時(shí)間:2017年09月29日 11:31:35   作者:稻草人11223  
這篇文章主要為大家詳細(xì)介紹了swift計(jì)步器CMPedometer的使用方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

最近公司接了個(gè)項(xiàng)目,是一款運(yùn)動(dòng)類(lèi)型的APP,可以檢測(cè)運(yùn)動(dòng)量(例如:步數(shù),上下樓等)、睡眠信息、速度等信息,因?yàn)橐郧按致缘牧私膺^(guò)傳感器方面的相關(guān)信息,知道主要是蘋(píng)果設(shè)備內(nèi)置的傳感器在起作用,傳感器的種類(lèi)也很多,有興趣的可以去查看蘋(píng)果官方文檔或者查閱大神們的博客都可以找到!但是一直也沒(méi)有自己寫(xiě)一下,做個(gè)測(cè)試:

話不多說(shuō),代碼如下:

1、準(zhǔn)備

//  計(jì)步器
  var myTextView = UITextView()
  var pedometer = CMPedometer()
  var myBtn = UIButton()

2、在plist文件中添加相關(guān)權(quán)限描述:

Privacy - Motion Usage Description  :String    計(jì)步器需要獲取您的運(yùn)動(dòng)信息

3、具體代碼如下:

  myBtn.frame = CGRect(x:10,y:360,width:kScreenWidth-20,height:50)
  myBtn.setTitle("按鈕", for: .normal)
  myBtn.setTitle("倒計(jì)時(shí)中", for: .disabled)
  myBtn.backgroundColor = UIColor.orange
  myBtn.setTitleColor(UIColor.white, for: .normal)
  myBtn.setTitleColor(UIColor.blue, for: .disabled)
  myBtn.addTarget(self, action: #selector(btnClick), for: .touchUpInside)
  self.view.addSubview(myBtn)

func btnClick(){
  self.startPedometerUpdates()
    
  }

//  ---------------------------------計(jì)步器--------------------------------------------
func creatPedometer(){
  myTextView.frame = CGRect(x:20,y:100,width:kScreenWidth-20,height:200)
  self.view.addSubview(myTextView)
  
//    創(chuàng)建觸發(fā)按鈕
  myBtn.frame = CGRect(x:10,y:360,width:kScreenWidth-20,height:50)
  myBtn.setTitle("按鈕", for: .normal)
//    myBtn.setTitle("倒計(jì)時(shí)中", for: .disabled)
  myBtn.backgroundColor = UIColor.orange
//    myBtn.setTitleColor(UIColor.white, for: .normal)
//    myBtn.setTitleColor(UIColor.blue, for: .disabled)
  myBtn.addTarget(self, action: #selector(btnClick), for: .touchUpInside)
  self.view.addSubview(myBtn)
}

//  開(kāi)始獲取步數(shù)統(tǒng)計(jì)數(shù)據(jù)
func startPedometerUpdates(){
  
//   判斷設(shè)備支持情況
  guard CMPedometer.isStepCountingAvailable() else {
    self.myTextView.text = "\n當(dāng)前設(shè)備不支持獲取步數(shù)\n"
    return
  }
  
//    獲取今天凌晨時(shí)間
  let cal = Calendar.current
  var comps = cal.dateComponents([.year,.month,.day], from: Date())
  comps.hour = 0
  comps.minute = 0
  comps.second = 0
  let midnightOfToday = cal.date(from: comps)
  
//初始化并開(kāi)始實(shí)時(shí)獲取數(shù)據(jù)
    self.pedometer.startUpdates (from: midnightOfToday!, withHandler: { pedometerData, error in
      //錯(cuò)誤處理
      guard error == nil else {
        print(error!)
        return
      }
    
      //獲取各個(gè)數(shù)據(jù)
      var text = "---今日運(yùn)動(dòng)數(shù)據(jù)---\n"
      if let numberOfSteps = pedometerData?.numberOfSteps {
        text += "步數(shù): \(numberOfSteps)\n"
      }
      if let distance = pedometerData?.distance {
        text += "距離: \(distance)\n"
      }
      if let floorsAscended = pedometerData?.floorsAscended {
        text += "上樓: \(floorsAscended)\n"
      }
      if let floorsDescended = pedometerData?.floorsDescended {
        text += "下樓: \(floorsDescended)\n"
      }
      if #available(iOS 9.0, *) {
        if let currentPace = pedometerData?.currentPace {
          text += "速度: \(currentPace)m/s\n"
        }
      } else {
        // Fallback on earlier versions
      }
      if #available(iOS 9.0, *) {
        if let currentCadence = pedometerData?.currentCadence {
          text += "速度: \(currentCadence)步/秒\n"
        }
      } else {
        // Fallback on earlier versions
      }
      
//        在線程中更新文本框數(shù)據(jù)
      DispatchQueue.main.async {
        
        self.myTextView.text = text
      }
      
  })

然后,測(cè)試了下,親自去爬了3層樓梯,如下圖:

基本的實(shí)現(xiàn)就完成了!

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

相關(guān)文章

  • 舉例講解Swift編程中switch...case語(yǔ)句的用法

    舉例講解Swift編程中switch...case語(yǔ)句的用法

    這篇文章主要介紹了Swift編程中switch...case語(yǔ)句的用法,其中fallthrough關(guān)鍵字在switch語(yǔ)句中的使用是重點(diǎn),需要的朋友可以參考下
    2016-04-04
  • Swift泛型Generics淺析講解

    Swift泛型Generics淺析講解

    泛型代碼讓你能根據(jù)你所定義的要求,寫(xiě)出可以用于任何類(lèi)型的靈活的、可復(fù)用的函數(shù)。泛型是 Swift 最強(qiáng)大的特性之一,很多 Swift 標(biāo)準(zhǔn)庫(kù)是基于泛型代碼構(gòu)建的
    2022-08-08
  • 深入理解Swift中的訪問(wèn)控制關(guān)鍵字

    深入理解Swift中的訪問(wèn)控制關(guān)鍵字

    這篇文章主要給大家介紹了Swift中訪問(wèn)控制關(guān)鍵字的相關(guān)資料,文中介紹的非常詳細(xì),對(duì)大家具有一定的參考價(jià)值,需要的朋友們下面來(lái)一起看看吧。
    2017-03-03
  • 分析Swift性能高效的原因

    分析Swift性能高效的原因

    絕大多數(shù)公司選擇Swift語(yǔ)言開(kāi)發(fā)iOS應(yīng)用,主要原因是因?yàn)镾wift相比Objc有更快的運(yùn)行效率,更加安全的類(lèi)型檢測(cè),更多現(xiàn)代語(yǔ)言的特性提升開(kāi)發(fā)效率;這一系列的優(yōu)點(diǎn)使Swift語(yǔ)言的熱度越來(lái)越高。
    2020-10-10
  • Swift中初始化init的方法小結(jié)

    Swift中初始化init的方法小結(jié)

    Swift有著超級(jí)嚴(yán)格的初始化方法,不僅強(qiáng)化了designated初始化方法的地位,所有不加修飾的init方法都需要在方法中確保非Optional的實(shí)例變量被賦值初始化,下面這篇文章主要給大家介紹了關(guān)于Swift中初始化init的相關(guān)資料,需要的朋友可以參考下。
    2018-04-04
  • 蘋(píng)果公司編程語(yǔ)言Swift語(yǔ)言簡(jiǎn)介

    蘋(píng)果公司編程語(yǔ)言Swift語(yǔ)言簡(jiǎn)介

    這篇文章主要介紹了蘋(píng)果公司編程語(yǔ)言Swift語(yǔ)言簡(jiǎn)介,Swift 是一門(mén)新的編程語(yǔ)言,兼容Objective-C代碼,是用來(lái)代替Objective-C的蘋(píng)果主力開(kāi)發(fā)語(yǔ)言,需要的朋友可以參考下
    2014-07-07
  • swift版webview加載網(wǎng)頁(yè)進(jìn)度條效果

    swift版webview加載網(wǎng)頁(yè)進(jìn)度條效果

    這篇文章主要為大家詳細(xì)介紹了swift實(shí)現(xiàn)webview加載網(wǎng)頁(yè)進(jìn)度條效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-11-11
  • 解析Swift語(yǔ)言面相對(duì)象編程中的繼承特性

    解析Swift語(yǔ)言面相對(duì)象編程中的繼承特性

    這篇文章主要介紹了解析Swift語(yǔ)言面相對(duì)象編程中的繼承特性,是Swift入門(mén)學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下
    2015-11-11
  • swift使用SDPhotoBriwser瀏覽圖片教程

    swift使用SDPhotoBriwser瀏覽圖片教程

    這篇文章主要為大家介紹了swift如何使用SDPhotoBriwser瀏覽圖片的教程示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步
    2021-10-10
  • SwiftUI 中創(chuàng)建反彈動(dòng)畫(huà)的實(shí)現(xiàn)

    SwiftUI 中創(chuàng)建反彈動(dòng)畫(huà)的實(shí)現(xiàn)

    這篇文章主要介紹了SwiftUI 中創(chuàng)建反彈動(dòng)畫(huà)的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-10-10

最新評(píng)論