AVfoundation相机关闭屏幕Obj-C

时间:2017-04-20 04:01:50

标签: ios objective-c

我正致力于扫描使用AVFoundation的条形码ios App

所以我使用界面构建器创建了一个带约束的方框。方框符合约束条件。非常好。 我有以下代码将avcapturelayer添加到方框中。

self.captureLayer = [[AVCaptureVideoPreviewLayer alloc] initWithSession:self.captureSession];
[self.captureLayer setFrame:self.cameraPreviewView.layer.bounds];
[self.captureLayer setVideoGravity:AVLayerVideoGravityResizeAspectFill];
[self.cameraPreviewView.layer addSublayer:self.captureLayer];

图层跟随方框约束的前导空格,但不跟尾随。新添加的AVlayer离开屏幕(右侧),而方框本身就很好。我在这里缺少什么?

谢谢!

3 个答案:

答案 0 :(得分:0)

我认为你应该尝试设置self.captureLayer bounds / position而不是frame? 干杯!

答案 1 :(得分:0)

如果您在viewDidLoad中设置框架,可能会发生这种情况。如果是这样,请尝试在viewWillAppear:中执行此操作。

答案 2 :(得分:0)

这可以解决您的问题

CGRect bounds=view.layer.bounds;
captureLayer.videoGravity = AVLayerVideoGravityResizeAspectFill;
captureLayer.bounds=bounds;
captureLayer.position=CGPointMake(CGRectGetMidX(bounds), CGRectGetMidY(bounds));

或者

正如您使用的是AVLayerVideoGravityResizeAspectFill所以它会离开屏幕,您可以使用AVLayerVideoGravityResizeAspectFit代替。

使用clipToBound=YES;时(使用View时)需要设置AVLayerVideoGravityResizeAspectFill

view.clipToBound=YES;

然后添加Sublayer to view

view.layer.masksToBounds = YES;