我正在尝试学习AVFoundation基础知识。现在我试图让最简单的自定义相机演示成为可能。一般方案是使用UIView
作为AVCaptureVideoPreviewLayer
所以我用以下方式创建了一个previewLayer:
let previewLayer = AVCaptureVideoPreviewLayer(session: captureSession)
作为以下我这样做:
previewLayer?.frame = self.imageView.bounds
self.imageView.layer.addSublayer(previewLayer)
captureSession.startRunning()
基本上就是这样。因此,captureSession正在运行,但在UIView
内可视化相机预览错位。请看下面的图片
但是,我几乎可以肯定我在故事板中做了一切: 对不起,我不知道要添加什么,因为我在swift中比较新。如果我错过了回答所需的任何信息,请告诉我。
所以问题是这种UI行为可能是什么原因?
提前致谢。
答案 0 :(得分:2)
您需要设置视图的内容模式:
previewLayer.videoGravity = AVLayerVideoGravityResizeAspectFill;
答案 1 :(得分:0)
首先,假设您使用的是Autolayout,请确保您的约束对于故事板中的视图是正确的。如果你不使用Autolayout,我会建议你先行。然后再继续。
将AVCaptureVideoPreviewLayer
添加到imageView
后,您需要为previewLayer.frame = self.imageView.layer.bounds
设置框架。
size
我认为应该照顾它。如果您轮播设备,则可能需要更新视图控制器previewLayer
中viewWillLayoutSubviews
的{{1}}。