gpt4 book ai didi

iphone - 在方向锁定的情况下强制相机在风景中查看

转载 作者:可可西里 更新时间:2023-11-01 05:02:03 30 4
gpt4 key购买 nike

我正在开发增强现实游戏,当设备的方向锁定打开时,我遇到了相机 View 方向的问题。

我正在使用此代码在 View 中加载相机 View :

AVCaptureSession *session = [[AVCaptureSession alloc] init];
AVCaptureVideoPreviewLayer *captureVideoPreviewLayer = [[AVCaptureVideoPreviewLayer alloc] initWithSession:session];
captureVideoPreviewLayer.frame = self.sessionView.bounds;
[self.sessionView.layer addSublayer:captureVideoPreviewLayer];
CGRect bounds=sessionView.layer.bounds;
captureVideoPreviewLayer.videoGravity = AVLayerVideoGravityResizeAspectFill;
captureVideoPreviewLayer.bounds=bounds;
captureVideoPreviewLayer.orientation = [[UIDevice currentDevice] orientation];
captureVideoPreviewLayer.position=CGPointMake(CGRectGetMidX(bounds), CGRectGetMidY(bounds));

AVCaptureDevice *device = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];
// device.position ;
NSError *error = nil;
AVCaptureDeviceInput *input = [AVCaptureDeviceInput deviceInputWithDevice:device error:&error];
if ([device hasTorch]) {
([device supportsAVCaptureSessionPreset:AVCaptureSessionPreset1280x720]);
}
else {
([device supportsAVCaptureSessionPreset:AVCaptureSessionPreset640x480]);
}
[session addInput:input];
[session startRunning];

为了保持应用程序的横向方向正确,我只选择了 Xcode 应用程序摘要中的那个框,其中:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
return ((interfaceOrientation == UIInterfaceOrientationLandscapeRight));
}

当设备启用方向锁定(双击主屏幕按钮,向右滑动,点击方向图标)时,相机 View 为纵向,游戏的其余部分为横向。有没有什么办法解决这一问题?据我所知,当用户打开游戏时无法关闭方向锁定。

最佳答案

您的预览层未定向的原因是您使用的是已弃用的 API,而且您没有在设备方向更改时更新视频方向。

  1. 删除弃用的 API,即在您的代码中而不是

    captureVideoPreviewLayer.orientation

    使用 videoOrientation 属性即

    captureVideoPreviewLayer.connection.videoOrientation 
  2. 按如下方式更新 shouldAutorotate 中的视频方向:

    - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
    {

    if(interfaceOrientation == UIInterfaceOrientationLandscapeRight)
    {
    captureVideoPreviewLayer.connection.videoOrientation = AVCaptureVideoOrientationLandscapeRight
    }

    // and so on for other orientations

    return ((interfaceOrientation == UIInterfaceOrientationLandscapeRight));
    }

关于iphone - 在方向锁定的情况下强制相机在风景中查看,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13833908/

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