【问题标题】:Can ARKit display WKWebview?ARKit 可以显示 WKWebview 吗?
【发布时间】:2018-12-10 09:28:50
【问题描述】:

尝试使用 ARKit 显示 WKWebView,我得到的只是一个显示背景但没有前景的页面。页面可以滚动。我附上了苹果网页作为截图。

代码如下:

DispatchQueue.main.async {
  let webView = WKWebView(frame: CGRect(x: 0, y: 0, width: 640, height: 480))
  let request = URLRequest(url: URL(string: "https://www.apple.com")!)

  webView.load(request)
  plane.firstMaterial?.diffuse.contents = webView
}

这是否意味着 ARKit 无法显示网页?我正在使用运行 ARKit 2 的 iOS 12 beta 2。我还关闭了 App Transport Security Settings 并允许任意加载。

我也浏览了这个网站,发现有人遇到同样的问题但没有解决方案:WKWebView is showing only background

更新:它适用于 UIWebView。

【问题讨论】:

  • 你能给我们看一个你的 UIWebView 代码示例吗?谢谢!
  • 它对我来说适用于 UIWebView,但有时这些黑丝带就像您在此处上传的屏幕截图一样。有什么解决办法吗?

标签: scenekit wkwebview arkit


【解决方案1】:

documentation 明确声明您不能将UIViews 显示为SCNMaterialProperty

SceneKit 不能使用已经在别处显示的层(例如,UIView 对象的支持层)。

一种解决方法是创建页面的UIImage 并显示它。

【讨论】:

  • 但它适用于 UIWebView - 这不是 UIView 对象吗?
  • 我有时也让它工作,但不可靠。我会寻找替代解决方案。
  • 谢谢。 UIWebView 对我来说似乎可以可靠地工作,但已被弃用。
  • 我同意这一点。 UIWebView 可以工作(有它自己的后续问题,即第一响应者问题),但已被弃用,因此没有未来使用它。 WKWebView 只是不起作用。也许有一种方法可以提取支持层?加油苹果,如果你要强制弃用 UIWebView,至少让 WKWebView 在 ARKit 中工作。很多人都想把网页贴在墙上。
【解决方案2】:

使用 Scenekit 节点很难实现它,但如果使用 SprikeKit 节点就可以了。为此使用 SpriteKit 节点。

【讨论】:

  • 补充一点——如果你可以在 SpriteKit 场景中使用它,我相信你可以使用 SpriteKit 场景作为 SCNNode 的材质。但是,您必须手动捕获用户交互并将其转发到 WKWebView。
  • 那么继续,如何将 WKWebView 添加到 SpriteKit 场景中。我想你会发现你做不到。仅作为 SKView 的子视图。这意味着您将无法将其用作 SpriteKit 纹理。但我希望你能证明我错了。
【解决方案3】:

很遗憾,它不受支持。

查看此处了解更多信息: Apple Developer Forum

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-12
    • 1970-01-01
    • 2018-01-21
    • 2019-01-03
    • 2021-09-02
    相关资源
    最近更新 更多