使用相机时如何获取设备的方向?
Posted
技术标签:
【中文标题】使用相机时如何获取设备的方向?【英文标题】:how to get the orientation of device when use camera? 【发布时间】:2015-01-23 06:18:10 【问题描述】:我想知道拍照时手机的方向,我用:
NSLog(@"%ld", self.interfaceOrientation);
NSLog(@"%ld", [UIDevice currentDevice].orientation);
NSLog(@"%ld", [[UIApplication sharedApplication] statusBarOrientation]);
但不管我到底是什么方向,代码都打印 1 1 1 ,代表 UIDeviceOrientationPortrait; 在我的应用目标中,设备方向我只选择纵向,
这是导致代码显示错误结果的原因吗?
我怎样才能得到真正的方向??????
【问题讨论】:
ios: camera orientation 的可能重复项 【参考方案1】:默认相机方向是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;
【讨论】:
我想要的情况是:无论我拍照时手机是什么方向,照片看起来总是和我们眼睛看到的方向一致;;所以,当我拍照时,我需要知道我是否改变了方向..... 贴出代码的意思是“AVCaptureConnection *conn=self.previewLayer.connection;”可以确定照片的方向,所以我可以将 conn 设置为“toInterfaceOrientation”方向? 实际上它决定了您如何访问方向模式并根据需要使用它。无论如何,您必须手动执行此操作,iOS 不会在相机运行时返回您的方向。 如果我想纠正照片的方向,首先我需要知道它是怎么出错的,这意味着我在拍照时需要知道手机的方向... ...;如果 ios 有不支持相机运行的方向,这意味着我需要弄清楚手机是如何旋转的 - -!...有什么方法可以用来做这个吗?【参考方案2】:无法获取设备的方向,因为您将支持的界面方向固定为纵向,同时启用横向并尝试以下代码,
UIInterfaceOrientation interfaceOrientation = [[UIApplication sharedApplication] statusBarOrientation];
if(UIDeviceOrientationIsLandscape(interfaceOrientation))
NSLog(@"Landscape Orientation");
else
NSLog(@"Portrait Orientation");
希望对你有帮助
【讨论】:
它不起作用,仍然总是显示 UIDeviceOrientationPortrait;你的意思是因为我只选择了纵向,所以方向不显示正确....;如果是这样,有什么办法可以吗?弄清楚我什么时候旋转手机? 是的,这是因为您只在应用目标中选择了 UIDeviceOrientationPortrait。这个方法[[UIApplication sharedApplication] statusBarOrientation]
给出了应用程序的方向,而不是设备的方向。为了获得正确的方向,您也需要选择横向(在应用程序目标中)
interfaceOrientation != deviceOrientation... 不同的野兽。您可以在 plist 中指定 interfaceOrientations,但您可以限制设备在 3d 空间中的实际处理方式吗?
"选择横向" 仍然没有帮助 - -!;就像@iOSNoob 说的"iOS 不会在相机运行时返回你的方向"~~~~~~~~~
没错,interfaceOrientation != deviceOrientation,如果我们允许设备旋转应用程序方向以匹配设备方向(通过选择支持的界面方向为纵向、倒置、横向左侧和横向右侧Targets ) ,那么就有可能获得正确的方向。以上是关于使用相机时如何获取设备的方向?的主要内容,如果未能解决你的问题,请参考以下文章