当我将AVCaptureVideoPreviewLayer添加到我的UIView时,UIButton消失了

时间:2014-03-28 00:34:37

标签: ios uiview uibutton

我已经为viewcontroller添加了一个视图,并在Interface builder中为我的视图添加了一个记录按钮。我以编程方式初始化AVCaptureVideoPreview图层并将其添加到我的view.layer。一旦我跑,我看到相机在我的屏幕上工作,但没有按钮。我必须使用[myView addSubview:self.record]添加按钮,然后我会看到它。我检查了我的界面构建器,按钮是不透明的,但它仍然不会显示,直到我在代码中添加它。

有什么想法?

非常感谢您的帮助。

2 个答案:

答案 0 :(得分:4)

那是因为您可能在视图控制器的viewDidLoad中添加了AVCaptureVideoPreviewLayer,其中IB的所有视图都已加载,因此它覆盖了UIButton - 您将此图层添加到顶部当前图层(使用故事板/界面构建器中的视图)。解决方案是为AVCaptureVideoPreviewLayer创建一个容器,并将其添加为容器的子层。您的按钮和容器视图必须是视图层次结构中的兄弟。此外,按钮必须放在容器的顶部。

AVCaptureVideoPreviewLayer *captureVideoPreviewLayer = [[AVCaptureVideoPreviewLayer alloc] initWithSession:session];
[self.containerView.layer addSublayer:captureVideoPreviewLayer];

这是故事板中的视图层次结构:

view hierarchy

答案 1 :(得分:0)

使用layer.insertSublayer(...,上面:...)将您的图层插入视频图层上方。

以下是有关Swift如何在视频流link顶部插入图片的详细说明