【发布时间】:2019-10-09 17:04:23
【问题描述】:
当离开我的增强现实视图控制器时,这些 _SCNSnapshotWindow 对象仍然存在于我的屏幕左上角,并阻止我与它们下方的任何对象进行交互,在我的情况下,它是我的返回主菜单按钮。 有人知道我怎样才能摆脱这些物体吗?
【问题讨论】:
标签: swift xcode augmented-reality arkit
当离开我的增强现实视图控制器时,这些 _SCNSnapshotWindow 对象仍然存在于我的屏幕左上角,并阻止我与它们下方的任何对象进行交互,在我的情况下,它是我的返回主菜单按钮。 有人知道我怎样才能摆脱这些物体吗?
【问题讨论】:
标签: swift xcode augmented-reality arkit
当我在场景中使用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()
}
【讨论】:
我今天遇到了同样的问题,我解决的方法如下(是的,我已经通过它的框架尺寸搜索了窗口,不要对我评价太高 :D):
UIApplication.shared.windows.forEach {
if $0.frame.width == 300 && $0.frame.height == 300 {
print($0)
$0.isHidden = true
}
}
我在我的 VC viewWillDisappear 函数上调用了它,它解决了这个问题。我确信它可以表现得更好,但我将不得不更深入地研究它。希望对你有所帮助。
【讨论】: