使用相机时如何获取设备的方向?

时间:2015-01-23 06:18:11

标签: ios objective-c orientation avfoundation

我想知道拍照时手机的方向,我使用:

  NSLog(@"%ld", self.interfaceOrientation);
  NSLog(@"%ld", [UIDevice currentDevice].orientation);
  NSLog(@"%ld", [[UIApplication sharedApplication] statusBarOrientation]);

但不管我到底是什么方向,所有代码都打印1 1 1,代表UIDeviceOrientationPortrait; 在我的应用目标中,设备方向我只选择肖像,

这是导致代码显示错误结果的原因吗?

我怎样才能获得真正的定位?

2 个答案:

答案 0 :(得分:0)

默认情况下,相机方向为UIInterfaceOrientationLeft,如果您想使用相机更改方向,则必须手动进行。

AVCaptureConnection *conn=self.previewLayer.connection;

if ([conn isVideoOrientationSupported])
{
    switch (toInterfaceOrientation)
    {
        case UIInterfaceOrientationPortrait:
            [conn setVideoOrientation:AVCaptureVideoOrientationPortrait];
            break;
        case UIInterfaceOrientationLandscapeRight:
            [conn setVideoOrientation:AVCaptureVideoOrientationLandscapeRight]; 
            break;
        case UIInterfaceOrientationLandscapeLeft:
            [conn setVideoOrientation:AVCaptureVideoOrientationLandscapeLeft]; 
            break;
        default:
            [conn setVideoOrientation:AVCaptureVideoOrientationPortrait]; 
            break;
    }
}

答案 1 :(得分:0)

无法获取设备的方向,因为您将支持的界面方向修改为纵向,同时启用横向并尝试以下代码,

UIInterfaceOrientation interfaceOrientation = [[UIApplication sharedApplication] statusBarOrientation];
if(UIDeviceOrientationIsLandscape(interfaceOrientation)){
    NSLog(@"Landscape Orientation");
}
else
{
   NSLog(@"Portrait Orientation");
}

希望这有帮助