IOS 計步器
阿新 • • 發佈:2017-06-19
property view 博客 control times nbsp 分享 img 流行
這篇博客介紹的是當前比較流行的“計步器”-只是簡單的知識點
計步器的實現在IOS8開始進行了改變。
但是我會對之前之後的都進行簡單介紹。
IOS 8 -
// // ViewController.m // CX 計步器 // // Created by ma c on 16/4/12. // Copyright ? 2016年 bjsxt. All rights reserved. // #import "ViewController.h" #import <CoreMotion/CoreMotion.h> @interface ViewController () @property (nonatomic, strong) CMStepCounter * counter; @end @implementation ViewController #pragma mark - <懶加載> - (CMStepCounter *)counter{ if (!_counter) { _counter = [[CMStepCounter alloc]init]; } return _counter; } - (void)viewDidLoad { [super viewDidLoad]; //判斷計步器是否可用 if (![CMStepCounter isStepCountingAvailable]) { NSLog(@"計步器不可用"); return; } //開始計步 //startStepCountingUpdatesToQueue 選擇在哪個線程裏進行 //updateOn 對應的是每隔幾秒後回調下面的block [self.counter startStepCountingUpdatesToQueue:[NSOperationQueue mainQueue] updateOn:2 withHandler:^(NSInteger numberOfSteps, NSDate * _Nonnull timestamp, NSError * _Nullable error) { if (error) { return ; } NSLog(@"可以在這裏進行一些操作"); }]; } @end
IOS 8 +
// // ViewController.m // CX 計步器 // // Created by ma c on 16/4/12. // Copyright ? 2016年 bjsxt. All rights reserved. // #import "ViewController.h" #import <CoreMotion/CoreMotion.h> @interface ViewController () @property (nonatomic, strong) CMPedometer * meter; @end @implementation ViewController #pragma mark - <懶加載> - (CMPedometer *)meter{ if (!_meter) { _meter = [[CMPedometer alloc]init]; } return _meter; } - (void)viewDidLoad { [super viewDidLoad]; //判斷計步器是否可用 if (![CMPedometer isStepCountingAvailable]) { NSLog(@"計步器不可用"); return; } //開始計步 //在一段時間內的部步數與距離 [self.meter queryPedometerDataFromDate:[NSDate date] toDate:[NSDate dateWithTimeIntervalSinceNow:60*60] withHandler:^(CMPedometerData * _Nullable pedometerData, NSError * _Nullable error) { if (error) { NSLog(@"error===%@",error); } else { NSLog(@"步數===%@",pedometerData.numberOfSteps); NSLog(@"距離===%@",pedometerData.distance); } }]; } @end
IOS 計步器