当我将 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 轴上旋转
当我将 IterativeImputer 与 KNeighborsClassifier 一起使用时出现错误“未知标签类型:'连续'”