UIInterfaceOrientation是风景但UIView仍然在肖像模式
问题描述:
我正在开发一个iOS应用程序与最新的SDK。UIInterfaceOrientation是风景但UIView仍然在肖像模式
我正在开发一款仅支持LandscapeRight方向的相机应用程序。
On Main ViewController
我为AVCaptureVideoPreviewLayer
添加了UIView
。换句话说,主要是ViewController
我有主视图,另一个视图videoPreviewView
,对于AVCaptureVideoPreviewLayer
。
我对viewWillAppear:
方法建立AVCaptureVideoPreviewLayer
:
- (void) viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
[self setUpVideo];
}
- (void)setUpVideo
{
NSLog(@"Set up video");
if (DataExchanger.cameraManager != nil)
{
UIView *view = [self videoPreviewView];
CALayer *viewLayer = [view layer];
[viewLayer setMasksToBounds:YES];
AVCaptureVideoPreviewLayer *newCaptureVideoPreviewLayer = [[AVCaptureVideoPreviewLayer alloc] initWithSession:DataExchanger.cameraManager.captureSession];
CGRect bounds = [view bounds];
NSLog(@"BOUNDS: %@", NSStringFromCGRect(bounds));
[newCaptureVideoPreviewLayer setFrame:bounds];
[newCaptureVideoPreviewLayer setVideoGravity:AVLayerVideoGravityResizeAspectFill];
[viewLayer insertSublayer:newCaptureVideoPreviewLayer below:[[viewLayer sublayers] objectAtIndex:0]];
}
}
我得到这个日志:
BOUNDS: {{0, 0}, {320, 480}}
但UIInterfaceOrientation
为UIInterfaceOrientationLandscapeRight
,并与方向,我会得到这些值:
BOUNDS: {{0, 0}, {480, 320}}
另一个问题是我看到视频旋转-90度。
我发现这个stackoverflow question,但从未触发- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation
方法。
发生了什么事?我该如何解决这个问题?
答
- AVCaptureVideoPreviewLayer的默认对象方向为横向!
- AVCaptureVideoPreviewLayer的方向不随设备的方向而改变。你必须手动改变它。
- 要手动更改它,你需要调用预览层的连接,并将其旋转:
iOS6的:
AVCaptureConnection *previewLayerConnection=self.newCaptureVideoPreviewLayer.connection;
if ([previewLayerConnection isVideoOrientationSupported])
[previewLayerConnection setVideoOrientation:AVCaptureVideoOrientationLandscapeRight];
< iOS6的:
if ([self.newCaptureVideoPreviewLayer isOrientationSupported])
[self.newCaptureVideoPreviewLayer setOrientation:AVCaptureVideoOrientationLandscapeRight];
我的工作与最新的SDK,我支持iOS 5.0及以上。我必须使用哪个版本的答案?但我认为你的回答并没有解决我的问题,因为现在我正在使用第二个选项,而且我遇到了这个问题。 – VansFannel 2013-03-18 07:36:35
如果有人打算在发帖后的3个月随机抽取3个我的答案;至少请发表评论和理由(如果有的话)。 – Spectravideo328 2014-05-20 11:24:31