我正致力于扫描使用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离开屏幕(右侧),而方框本身就很好。我在这里缺少什么?
谢谢!
答案 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;