1.设备没有锁屏(不能旋转屏幕)的状态下:
UIDevice *device = [UIDevice currentDevice];
但是当设备不能旋转的时候,此方法就不能获取到设备方向了。
2. 当设备不能旋转的时候,我们可以通过CMMotionManager类来计算设备的方向:
@property(nonatomic,strong)CMMotionManager *cmmotionManager;
if([self.cmmotionManager isDeviceMotionAvailable]) {
[self.cmmotionManager startAccelerometerUpdatesToQueue:[NSOperationQueue currentQueue] withHandler:^(CMAccelerometerData * _Nullable accelerometerData, NSError * _Nullable error) {
AVCaptureVideoOrientation orientationNew;
if (acceleration.x >= 0.75) {//home button left
orientationNew = UIDeviceOrientationLandscapeRight;
}
else if (acceleration.x <= -0.75) {//home button right
orientationNew = UIDeviceOrientationLandscapeLeft;
}
else if (acceleration.y <= -0.75) {
orientationNew = UIDeviceOrientationPortrait;
}
else if (acceleration.y >= 0.75) {
orientationNew = UIDeviceOrientationPortraitUpsideDown;
}
else {
// Consider same as last time
return;
}
}];
}
在iOS中,当设备未锁定且能旋转时,可通过`UIDevice`获取设备方向;但在设备锁定或不能旋转时,需利用`CMMotionManager`的加速度传感器数据来计算设备方向,如根据加速度判断`LandscapeRight`、`LandscapeLeft`、`Portrait`和`PortraitUpsideDown`等不同方向。
1694

被折叠的 条评论
为什么被折叠?



