ios - iPhoneX:AVCaptureVideoPreviewLayer 没有占据整个屏幕?
问题描述
我在 UIViewController 中制作了一个自定义相机,但我无法在 iPhoneX 上将相机输出预览到整个屏幕。相机视图和屏幕边缘之间似乎有很大的填充。我的观点似乎已经从安全区域插入了。请问有人可以建议吗?
我的代码:
class CaptureImageViewController: UIViewController, UIImagePickerControllerDelegate, AVCaptureVideoDataOutputSampleBufferDelegate {
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
previewLayer = AVCaptureVideoPreviewLayer.init(session: self.captureSession)
// Use 'insertSublayer' to enable button to be viewable
view.layer.insertSublayer(previewLayer, at: 0)
previewLayer.frame = view.frame
previewFrame = previewLayer.frame
}
}
我的布局:
解决方案
尝试更改previewLayer.frame = view.frame
为
let frame = UIScreen.main.bounds
view.layer.insertSublayer(previewLayer, at: 0)
previewLayer.frame = frame
previewFrame = previewLayer.frame
推荐阅读
- excel - Excel 问题:QueryTable.Add 从现有数据连接
- javascript - 遍历一个嵌套在一个对象中的数组,该对象嵌套在一个数组 React 中
- authentication - 使用 Serenity BDD 通过 SSO(单点登录)/OIDC 自动登录
- python - 求前一个数到下一个数的累计和
- c# - Azure Cosmos 分页:FeedResponse.ContinuationToken 在下一个请求中不起作用
- python - 如何运行 opendapL4.py
- wordpress - Wordpress 管理栏上的“编辑页面”链接损坏
- java - Back4app android studio 如何获取查询中的所有项目?
- security - 物联网 Nodemcu esp8266 LUA 脚本的 DAST 安全扫描 www HTML 服务器连接到摄像头和空调继电器
- swiftui - 存储 Firebase 身份验证信息的合适方法是什么,以便您可以离开应用程序并在仍然登录的情况下返回?