涉及框架: CoreMotion.framework
涉及类: CMMotionManager
例子:
- (void)addCmmotionManager{
__weaktypeof(self) weakSelf =self;
if([self.cmmotionManager isDeviceMotionAvailable]) {
[self.cmmotionManager startAccelerometerUpdatesToQueue:[NSOperationQueue currentQueue] withHandler:^(CMAccelerometerData * _Nullable accelerometerData, NSError * _Nullable error) {
UIDeviceOrientationorientationNew;
NSLog(@"x:%lf,y:%lf",accelerometerData.acceleration.x,accelerometerData.acceleration.y);
if(accelerometerData.acceleration.x>=0.75) {//home button left
orientationNew =UIDeviceOrientationLandscapeRight;
}
elseif(accelerometerData.acceleration.x<= -0.75) {//home button right
orientationNew =UIDeviceOrientationLandscapeLeft;
}
elseif(accelerometerData.acceleration.y<= -0.75) {
orientationNew =UIDeviceOrientationPortrait;
}
elseif(accelerometerData.acceleration.y>=0.75) {
orientationNew =UIDeviceOrientationPortraitUpsideDown;
}
else{
return;
}
if(weakSelf.curOrientation!= orientationNew) {
[weakSelfaddCmmotionManagerChange:orientationNew];
weakSelf.curOrientation= orientationNew ;
}
}];
}
}