gpt4 book ai didi

ios - UIInterfaceOrientation 是 Landscape 但 UIView 仍处于 Portrait 模式

转载 作者:行者123 更新时间:2023-12-01 17:09:26 26 4
gpt4 key购买 nike

我正在使用最新的 SDK 开发一个 iOS 应用程序。

我正在开发一个仅支持 LandscapeRight 方向的相机应用程序。

主线 ViewController我添加了一个 UIView对于 AVCaptureVideoPreviewLayer .换句话说,主要 ViewController我有主视图和另一个 View ,称为 videoPreviewView , 对于 AVCaptureVideoPreviewLayer .

我设置了AVCaptureVideoPreviewLayerviewWillAppear:方法:

- (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}}

但是 UIInterfaceOrientationUIInterfaceOrientationLandscapeRight有了这个方向,我会得到这些值:
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];

    关于ios - UIInterfaceOrientation 是 Landscape 但 UIView 仍处于 Portrait 模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15430636/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com