Ios AVCaptureSession提供缩放输出

Ios AVCaptureSession提供缩放输出,ios,avcapturesession,avcapturedevice,Ios,Avcapturesession,Avcapturedevice,我正在尝试使用AVCaptureSession制作一个自定义相机。 代码和所有的工作都很好。唯一的问题是视频输出层被放大了。这使得我的照片在默认情况下被放大 我什么都试过了,但找不出解决办法。下面是我使用的代码的一小部分: AVCaptureSession *session = [[AVCaptureSession alloc] init]; session.sessionPreset = AVCaptureSessionPresetPhoto; AVCaptureVideoPreviewL

我正在尝试使用AVCaptureSession制作一个自定义相机。 代码和所有的工作都很好。唯一的问题是视频输出层被放大了。这使得我的照片在默认情况下被放大

我什么都试过了,但找不出解决办法。下面是我使用的代码的一小部分:

AVCaptureSession *session = [[AVCaptureSession alloc] init];
session.sessionPreset = AVCaptureSessionPresetPhoto;


AVCaptureVideoPreviewLayer *captureVideoPreviewLayer = [[AVCaptureVideoPreviewLayer alloc] initWithSession:session];
[captureVideoPreviewLayer setVideoGravity:AVLayerVideoGravityResizeAspectFill];
编辑 我换了房间 AVLayerVideoGravityResizeAspectFill到AVLayerVideoGravityResizeAspect,这稍微纠正了输出,但视频没有出现在整个屏幕上。 请看屏幕截图


为什么显示空白(我设置的视图)?为什么它不包括那部分呢?是否缺少某些内容?

我找到的解决方案是,您必须为
AVCaptureVideoPreviewLayer
提供一个宽度和高度相同的帧。我通过查看Whatsapp扫描界面得到了这个解决方案


而且这个效果很好

实际上,
AVLayerVideoGravityResizeAspectFill
使您的视频帧在保持层的纵横比的情况下获得高度和宽度的填充。因此,在这种情况下,您可能希望尝试将
AVLayerVideoGravityResizeAspect
作为视频重力。@AdilSoomro我试过了。但是这让屏幕很尴尬。@AdilSoomro我对答案做了一些修改,你能检查一下吗,谢谢你粘贴完整的代码?您如何设置框架并将其添加到视图中?@AdilSoomro再次感谢您的回复。这是我的.m文件的全部代码