Ios 调整AVCaptureVideoPreviewLayer与相机纵横比的容器大小

Ios 调整AVCaptureVideoPreviewLayer与相机纵横比的容器大小,ios,iphone,swiftui,camera,Ios,Iphone,Swiftui,Camera,如何调整AVCaptureVideoPreviewLayer容器的高度,使其不会被裁剪?例如: let cameraPreviewLayer = AVCaptureVideoPreviewLayer(session: captureSession) cameraPreviewLayer.videoGravity = AVLayerVideoGravity.resizeAspect //or .resizeAspectFill cameraPreviewLayer.connection?.vide

如何调整AVCaptureVideoPreviewLayer容器的高度,使其不会被裁剪?例如:

let cameraPreviewLayer = AVCaptureVideoPreviewLayer(session: captureSession)
cameraPreviewLayer.videoGravity = AVLayerVideoGravity.resizeAspect //or .resizeAspectFill
cameraPreviewLayer.connection?.videoOrientation = AVCaptureVideoOrientation.portrait
cameraPreviewLayer.frame = self.view.frame
view.layer.insertSublayer(cameraPreviewLayer, at: 0)
  • resizeAspectFill保留纵横比,但会以裁剪预览图像为代价
  • resizeAspect显示预览而不进行裁剪,但只将提要和叶条居中放置在顶部/底部
相反,我希望容器本身调整自己的尺寸,这样父视图可以相应地重新流动。如果我有纵横比,那么我就可以做到这一点,但我找不到一种方法来获得它


有人有什么建议吗?

你可以使用
func captureOutput(uu-output:AVCaptureOutput,didOutput-sampleBuffer:CMSampleBuffer,from-connection:AVCaptureConnection){
来获取
sampleBuffer
,你可以将其转换成
CIImage
CIImage(cvPixelBuffer:CMSampleBufferGetImageBuffer)(sampleBuffer)!)
)。然后您可以读取
范围,这是一个CGSize。不过可能有更好的方法