2017-04-20 110 views
0

我正在扫描条形码iOS应用使用AVFoundationAVfoundation相机熄灭屏幕的OBJ-C

所以我创建使用接口建设者约束方盒子。方盒与约束条件都很好。非常好。 我有以下代码将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会在屏幕上向右(右侧),而方形盒本身都很好。我在这里错过了什么?

谢谢!

回答

0

我认为你应该尝试设置self.captureLayer的边界/位置,而不是帧? 干杯!

0

如果您将框架设置为viewDidLoad,可能会发生这种情况。如果是这样,请尝试使用viewWillAppear:代替。

0

这可能会解决你的问题

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

或者

因为你使用的是AVLayerVideoGravityResizeAspectFill所以它会走出屏幕,你可以使用AVLayerVideoGravityResizeAspectFit代替。

您(使用,当你查看)

view.clipToBound=YES; 

比增加子层来查看

view.layer.masksToBounds = YES; 
需要设置 clipToBound=YES;使用 AVLayerVideoGravityResizeAspectFill
相关问题