//设备的欧拉角pitch
@property(readonly, nonatomic) double pitch;
//设备的欧拉角yaw
@property(readonly, nonatomic) double yaw;
//设备状态的旋转矩阵
@property(readonly, nonatomic) CMRotationMatrix rotationMatrix;
//设备状态的四元数
@property(readonly, nonatomic) CMQuaternion quaternion;
@end
2、CoreMotion的使用
CoreMotion有两种使用方式,一种是我们主动向manager索取数据,一种是通过回调让manager将数据传给回调给我们,这两种方式分别称作pull方式和push方式。
pull方式:
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
//创建管理对象
manager= [[CMMotionManager alloc]init];
//开启加速度更新
[manager startAccelerometerUpdates];
//开启螺旋仪更新
[manager startGyroUpdates];
//开启状态更新
[manager startMagnetometerUpdates];
//创建定时器
NSTimer * time = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(updata) userInfo:nil repeats:YES];
time.fireDate = [NSDate distantPast];
}
-(void)updata{
//获取数据
NSLog(@"%f,%f,%fn%f,%f,%f",manager.accelerometerData.acceleration.x,manager.accelerometerData.acceleration.y,manager.accelerometerData.acceleration.z,manager.gyroData.rotationRate.x,manager.gyroData.rotationRate.y,manager.gyroData.rotationRate.z);
}
push方式:
//创建管理对象
manager= [[CMMotionManager alloc]init];
//在当前线程中回调
[manager startAccelerometerUpdatesToQueue:[NSOperationQueue currentQueue] withHandler:^(CMAccelerometerData * _Nullable accelerometerData, NSError * _Nullable error) {
NSLog(@"%f,%f,%fn%f,%f,%f",manager.accelerometerData.acceleration.x,manager.accelerometerData.acceleration.y,manager.accelerometerData.acceleration.z,manager.gyroData.rotationRate.x,manager.gyroData.rotationRate.y,manager.gyroData.rotationRate.z);
}];
3、CoreMotion的更多属性和方法
@interface CMMotionManager : NSObject
{
@private
id _internal;
}
//设置加速度传感器更新帧率
@property(assign, nonatomic) NSTimeInterval accelerometerUpdateInterval __TVOS_PROHIBITED;
//加速度传感器是否可用
@property(readonly, nonatomic, getter=isAccelerometerAvailable) BOOL accelerometerAvailable __TVOS_PROHIBITED;










