我想知道拍照时手机的方向,我使用:
NSLog(@"%ld", self.interfaceOrientation);
NSLog(@"%ld", [UIDevice currentDevice].orientation);
NSLog(@"%ld", [[UIApplication sharedApplication] statusBarOrientation]);
但不管我到底是什么方向,所有代码都打印1 1 1,代表UIDeviceOrientationPortrait; 在我的应用目标中,设备方向我只选择肖像,
这是导致代码显示错误结果的原因吗?
我怎样才能获得真正的定位?
答案 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");
}
希望这有帮助