ios - 无法为 AVCaptureVideoPreviewLayer 设置边界
问题描述
我很难改变 AVCaptureVideoPreviewLayer 的边界。无论我做什么,它总是以小尺寸结束,如下所示:
这是我的代码:
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
self.imageLayer.bounds = CGRect(x: 0, y: 0, width: 375, height: 100)
}
private func startLiveVideo() {
session.sessionPreset = AVCaptureSession.Preset.photo
let captureDevice = AVCaptureDevice.default(for: AVMediaType.video)
let deviceInput = try! AVCaptureDeviceInput(device: captureDevice!)
let deviceOutput = AVCaptureVideoDataOutput()
deviceOutput.videoSettings = [kCVPixelBufferPixelFormatTypeKey as String: Int(kCVPixelFormatType_32BGRA)]
deviceOutput.setSampleBufferDelegate(self, queue: DispatchQueue.global(qos: DispatchQoS.QoSClass.default))
session.addInput(deviceInput)
session.addOutput(deviceOutput)
self.imageLayer = AVCaptureVideoPreviewLayer(session: session)
imageLayer.frame = CGRect(x: 0, y: 0, width: 375, height: 100)
self.imageView.layer.addSublayer(self.imageLayer)
session.startRunning()
}
解决方案:
self.imageLayer.videoGravity = .resizeAspectFill
解决方案
您可以首先从 Storyboard 或yourViewController 500 x 500 或您想要的任何大小分配imageView的宽度和高度。
imageLayer.frame = CGRect(x: 0, y: 0, width: self.imageView.frame.width, height: self.imageView.frame.height)
self.imageView.layer.addSublayer(self.imageLayer)
推荐阅读
- python - PySide2 在访问 QObject::property() 时崩溃
- mql4 - 当收盘价交叉并收于某个移动平均线上方至已知摆动低点和摆动高点时,如何计算多少根柱线?
- osgi - OSGI EventAdmin 无法发送事件 - 在 Producer 上获取空点异常
- python - 从 python 生成具有列表中两列的 excel 文件
- jquery - 使用 switchClass 将父类悬停在子类上,但不影响具有同一类的其他 div
- javascript - 通过两个文本查找一个元素
- regex - vscode正则表达式查找/替换字符串中的替换字符
- python - 是否有可编程的方法将文件从 iPad 传输到 PC?(USB 连接)
- go - 使用接口避免 goroutine 在范围内的数据竞争
- django - 如何在 django.auth.contrib 中处理权限/验证