定义个全局变量 如果不是全局变量会报错let pedonmeter:CMPedometer = CMPedometer()在方法里面写, 两种方法用哪个都可以,不明白的地方可以看文档//判断该设备是否支持计步功能if CMPedometer.isStepCountingAvailable(){//开始时间let startTime = getStartTime()//结束时间let endTime = getEndTime()//第一种//获取一个时间范围内的数据最大7天参数 开始时间,结束时间, 一个闭包pedonmeter.queryPedometerDataFromDate(startTime, toDate:endTime, withHandler: { (pedometerData:CMPedometerData?, error:NSError?) -> Void inif error != nil{print("error:(error)")}else{print("开始时间:(startTime)")print("结束时间:(endTime)")print("步数===(pedometerData!.numberOfSteps)")print("距离===(pedometerData!.distance)")}})}//第二种//获取指定开始时间到当前时间的数据 参数 开始时间, 一个闭包pedonmeter.startPedometerUpdatesFromDate(startTime, withHandler: { (pedometerData:CMPedometerData?, error:NSError?) -> Void inif error != nil{print("error:(error)")}else{print("开始时间:(startTime)")print("结束时间:(endTime)")print("步数===(pedometerData!.numberOfSteps)")print("距离===(pedometerData!.distance)")}})下面是获取时间的方法,我是获取当天的,你们也可以自己改
/** 获取当前时区的时间 */func getEndTime() -> NSDate{//转换成本地时区let date = NSDate()let zone = NSTimeZone.systemTimeZone()let interval = zone.secondsFromGMTForDate(date)let nowDate = date.dateByAddingTimeInterval(Double(interval))return nowDate}/** 获取开始时间 当天0时0分0秒 */func getStartTime() -> NSDate{let datef = NSDateFormatter()datef.dateFormat = "yyyy-MM-dd"let stringdate = datef.stringFromDate(getEndTime())print("当天日期:(stringdate)")let tdate = datef.dateFromString(stringdate)//获取本地时区的当天0时0分0秒let zone = NSTimeZone.systemTimeZone()let interval = zone.secondsFromGMTForDate(tdate!)let nowday = tdate!.dateByAddingTimeInterval(Double(interval))return nowday}执行结果:
我当天走了 3107步 距离 2公里多
注意:如果你像支持ios7的话那不就能使用CMPedometer,CMPedometer 的前身是 CMStepCounter
总结
以上就是iOS实现计步器功能的全部内容,希望本文的内容对大家学习开发IOS能有所帮助,如果有疑问欢迎大家留言。