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

Posted

技术标签:

【中文标题】当我将 AVCaptureVideoPreviewLayer 添加到我的 UIView 时,UIButton 消失【英文标题】:UIButton disappear when I add AVCaptureVideoPreviewLayer to my UIView 【发布时间】:2014-03-28 00:34:37 【问题描述】:

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

有什么想法吗??

非常感谢您的帮助。

【问题讨论】:

【参考方案1】:

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

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

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

【讨论】:

【参考方案2】:

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

这里有一些更详细的关于 Swift 如何在视频流顶部插入图像link的说明

【讨论】:

以上是关于当我将 AVCaptureVideoPreviewLayer 添加到我的 UIView 时,UIButton 消失的主要内容,如果未能解决你的问题,请参考以下文章

当我将@Bean 添加到主类时出现 IllegalStateException

当我将 HTML 放入“包含”中时,为啥我的 javascript 不起作用?

为啥当我将 SKSpriteNode 与图像一起使用时它不会反弹,但当我使用 SKShapeNode 时它确实有效?

当我将视频播放到 Recyclerview 内的 VideoView 时,当我滚动时,它会在 x 轴上旋转

当我将空值视为这样的数组时,为啥 PHP 不会抱怨?

当我将 IterativeImputer 与 KNeighborsClassifier 一起使用时出现错误“未知标签类型:'连续'”