目标c - 设备运动姿态值

时间:2017-05-10 11:56:53

标签: ios objective-c devicemotion

我正在使用以下代码,但继续给我0值,请检查我做错了什么

UILabel *rollLabel = [[UILabel alloc] init];
CMQuaternion quat = self.motionManager.deviceMotion.attitude.quaternion;
float myRoll = radiansToDegrees(atan2(2*(quat.y*quat.w - quat.x*quat.z), 1 - 2*quat.y*quat.y - 2*quat.z*quat.z)) ;
float myPitch = radiansToDegrees(atan2(2*(quat.x*quat.w + quat.y*quat.z), 1 - 2*quat.x*quat.x - 2*quat.z*quat.z));
float myYaw = radiansToDegrees(asin(2*quat.x*quat.y + 2*quat.w*quat.z));
[rollLabel setText:[NSString stringWithFormat:@"ROLL = %f , - Pitch = %f, , - Yaw = %f", myRoll, myPitch, myYaw]];
rollLabel.frame = CGRectMake(0, 0, 400, 150);
rollLabel.backgroundColor=[UIColor greenColor];
rollLabel.textColor=[UIColor blackColor];
[self.view addSubview:rollLabel];

感谢您的帮助

1 个答案:

答案 0 :(得分:1)

首先我会尝试所有对象都不是nil,然后检查你是否真的运行了motionManager本身,如:

> create
Process created
Child pid is 5700
> 

如果你的代码在主线程上运行,那么下一个问题就是

有很多选项可能导致您遇到的问题