gpt4 book ai didi

ios - iPhone Xs - 为什么在使用 AVCaptureVideoPreviewLayer 时,我的 UIView 的上边框和安全区域的上边框之间有巨大的填充?

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

我正在为 iphone Xs Max 开发定制相机。我的布局如下。唯一的 UIView 的上、左、右、下边框锚定到安全区域。然而,我看到的是我的视频捕获输出的顶部边框和安全 View 的顶部边框之间有一个巨大的黑色空间。这个黑色空间是什么?我该如何计算它的高度?

enter image description here

布局:

enter image description here

enter image description here

UIView 约束: enter image description here

代码:

class NewCapturViewController: UIViewController, UIImagePickerControllerDelegate,AVCaptureVideoDataOutputSampleBufferDelegate  {

var previewLayer = AVCaptureVideoPreviewLayer.init()
var captureSession: AVCaptureSession!


override func viewWillAppear(_ animated: Bool) {
startAVCaptureSession()
}


func startAVCaptureSession() {
print("START CAPTURE SESSION!!")

// Setting Up a Capture Session
self.captureSession = AVCaptureSession()
captureSession.beginConfiguration()

// Configure input
let videoDevice = AVCaptureDevice.default(for: .video)

guard
let videoDeviceInput = try? AVCaptureDeviceInput.init(device: videoDevice!) as AVCaptureInput,
self.captureSession.canAddInput(videoDeviceInput)else {return}

self.captureSession.addInput(videoDeviceInput)

// Capture video output
let videoOutput = AVCaptureVideoDataOutput.init()
guard self.captureSession.canAddOutput(videoOutput) else {return}
videoOutput.setSampleBufferDelegate(self, queue: DispatchQueue.init(label: "videoQueue"))
self.captureSession.addOutput(videoOutput)


// start
self.captureSession.commitConfiguration()
self.captureSession.startRunning()


// Display camera preview
self.previewLayer = AVCaptureVideoPreviewLayer.init(session: self.captureSession)

// Use 'insertSublayer' to enable button to be viewable
self.camViewOutlet.layer.insertSublayer(self.previewLayer, at: 0)
self.previewLayer.frame = self.camViewOutlet.frame
self.previewFrame = previewLayer.frame


print("previewLayer.frame: \(previewLayer.frame)")

}



}

最佳答案

这是因为您将Align Top设置为Safe Area。请记住,这款手机有一个缺口 - 因此安全区域会更低。

如果您将 Storyboard 中的手机更改为 iPhone Xs(如问题中所述),您会发现存在此差距。您需要做的就是将顶部约束设置为 Superview 而不是 Safe Area

关于ios - iPhone Xs - 为什么在使用 AVCaptureVideoPreviewLayer 时,我的 UIView 的上边框和安全区域的上边框之间有巨大的填充?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53524775/

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