gpt4 book ai didi

ios - 如何将 View 发送到后台,使其位于主视图后面?

转载 作者:搜寻专家 更新时间:2023-11-01 06:23:14 31 4
gpt4 key购买 nike

目标

我想在主视图后面隐藏一个 AVCaptureSession,这样它就隐藏在 UIViewController 下,因为它对用户不可见。

显然,AVCaptureVideoPreviewLayerCALayer 的子类,我们用它来显示输入设备捕获的视频。

代码

这是我用来开始 session 的代码。代码开始 AVCaptureSession 并使用 previewLayer 将其框架放置在 View 的一层中。

var err : NSError? = nil
captureSession.addInput(AVCaptureDeviceInput(device: captureDevice, error: &err))

if err != nil {
println("error: \(err?.localizedDescription)")
}

var previewLayer = AVCaptureVideoPreviewLayer(session: captureSession)


self.view.layer.addSublayer(previewLayer)
previewLayer?.frame = self.view.layer.frame
captureSession.startRunning()

问题

其他人建议使用 view.sendSubviewToBack(cameraView) 但我不知道如何在我的代码中实现它。如何将 session 框架放在主视图后面,使其隐藏起来?

最佳答案

提到的 sendSubviewToBack 方法只适用于 View ,你有层,因此你需要一个不同的解决方案。

你需要的是类似

的东西
self.view.layer.insertSublayer(previewLayer, atIndex: 0)

这会将 previewLayer 作为当前层层次结构中的第一层插入。

或者如果你想在 self.view.layer 后面添加图层,你需要获取 self.view.layer 的父/超层,比如 self.view.layer.superlayer 并在那里添加 subview 。

关于索引 0 的说明
索引 0 将导致第一个显示/渲染的图层。如果您在索引 1 处有一个图层,它跨越屏幕的 3/4,在剩余的 1/4 处,索引 0 处的图层将是可见的。
如果您通过常规 addSublayer/addSubview 添加 View 或图层,它将作为 View 层次结构中的最新和最后一个对象插入,索引最高的对象将最后呈现。

关于ios - 如何将 View 发送到后台,使其位于主视图后面?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29681289/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com