关于CoreMotion的blog有很多,也有讲特别详细的,这里就示范一个特别有用的CoreMotion的简单用法:重力方向的感应,一分钟get方法
它看起来是这样的:
这是在手机上运行的,随着手机屏幕方向的不断变化,箭头始终指向地心引力的方向。嗯,就是这样。
首先导入相关头文件:#import <CoreMotion/CoreMotion.h>
arrowImageView 是屏幕中间的那个显示箭头的imageView
@implementation ViewController- (void)viewDidLoad {[super viewDidLoad];// Do any additional setup after loading the view, typically from a nib.CMMotionManager *motionManager = [[CMMotionManager alloc]init];if (!motionManager.accelerometerAvailable) {// fail code // 检查传感器到底在设备上是否可用}motionManager.accelerometerUpdateInterval = 0.01; // 告诉manager,更新频率是100Hz/* 加速度传感器开始采样,每次采样结果在block中处理 */// 开始更新,后台线程开始运行。[motionManager startAccelerometerUpdatesToQueue:[NSOperationQueue currentQueue] withHandler:^(CMAccelerometerData *accelerometerData, NSError *error){CMAccelerometerData *newestAccel = motionManager.accelerometerData;double accelerationX = newestAccel.acceleration.x;double accelerationY = newestAccel.acceleration.y;double ra = atan2(-accelerationY, accelerationX); // 返回值的单位为弧度double degree = ra * 180 / M_PI;NSLog(@"----- %f ----", degree);self.arrowImageView.transform = CGAffineTransformMakeRotation(ra + M_PI_2);}];}@end
代码地址在这里:代码