【问题标题】:Delete _SCNSnapshotWindow after leaving Augmented Reality View离开增强现实视图后删除 _SCNSnapshotWindow
【发布时间】:2019-10-09 17:04:23
【问题描述】:

当离开我的增强现实视图控制器时,这些 _SCNSnapshotWindow 对象仍然存在于我的屏幕左上角,并阻止我与它们下方的任何对象进行交互,在我的情况下,它是我的返回主菜单按钮。 有人知道我怎样才能摆脱这些物体吗?

【问题讨论】:

    标签: swift xcode augmented-reality arkit


    【解决方案1】:

    当我在场景中使用UIView 的实例(在我的例子中是子类)作为SCNPlane 上的漫反射材质内容时,我遇到了类似的问题。

    虽然UIView 用作材料内容已被广泛报道(在网络上的此处和其他地方)可以正常工作,但官方Apple documentation for the material contents 却明显缺席

    在查看了上面的官方文档后,我决定切换到有文档的(阅读:支持的)方法——在我的例子中是 UIImage——问题就消失了。这并不意味着您不能继续使用UIView,这可能是我这样做的方式所独有的,但是在将其分配为材料内容之前将视图转换为图像非常简单:

    class MyCustomView: UIView {
        func renderAsImage() -> UIImage {
            let renderer = UIGraphicsImageRenderer(bounds: bounds)
            return renderer.image { context in
                layer.render(in: context.cgContext)
            }
        }
    }
    

    那么在设置SCNPlane材质内容时,使用:

    if let view = UINib(nibName: "MyCustomView", bundle: nil).instantiate(withOwner: self, options: nil).first as? MyCustomView {
        plane.firstMaterial!.diffuse.contents = view.renderAsImage()
    }
    

    【讨论】:

    • 但问题是当我使用图像时,我没有收到任何事件或单击按钮。如何获得事件或点击?
    • 这似乎与您所问的问题不同,尽管我很欣赏我的解决方案可能会解决第一个问题,但会提出一个新问题 - 我会在这里查看以使按钮可用AR...stackoverflow.com/questions/49058411/…
    • @YogendraGirase 我遇到了同样奇怪的问题。我通过在退出 AR 体验时隐藏 _SCNSnapshotWindow 实例解决了这个问题。
    【解决方案2】:

    我今天遇到了同样的问题,我解决的方法如下(是的,我已经通过它的框架尺寸搜索了窗口,不要对我评价太高 :D):

    UIApplication.shared.windows.forEach {
            if $0.frame.width == 300 && $0.frame.height == 300 {
                print($0)
                $0.isHidden = true
            }
        }
    

    我在我的 VC viewWillDisappear 函数上调用了它,它解决了这个问题。我确信它可以表现得更好,但我将不得不更深入地研究它。希望对你有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-11-13
      • 1970-01-01
      • 1970-01-01
      • 2011-11-12
      • 1970-01-01
      • 1970-01-01
      • 2011-06-15
      相关资源
      最近更新 更多