【发布时间】:2021-12-14 22:38:38
【问题描述】:
谁能解释一下 WKCompositingView 实际上是什么?搜索 Apple 文档不会提供任何结果。它看起来像是包含网站内容,并且大小可能与包含在其中的 webView 不同。
【问题讨论】:
-
你是怎么遇到的?仅从名称来看,它听起来就像一个“复合”视图——将一堆分层图像连接成一个图像——HTML 页面的各种图形层。
标签: ios swift webkit wkwebview
谁能解释一下 WKCompositingView 实际上是什么?搜索 Apple 文档不会提供任何结果。它看起来像是包含网站内容,并且大小可能与包含在其中的 webView 不同。
【问题讨论】:
标签: ios swift webkit wkwebview
我真的不太了解 WebKit 以及它是如何实现的,但是它是开源的,你可以去看看代码。所以我做到了。
查看 WebKit 源代码,WKCompositingView 在文件 RemoteLayerTreeViews.mm 中定义。通过接口WKCompositingView 是UIView。
我不能 100% 确定,但看起来 WebKit 在呈现 HTML 时会生成“层”信息。
看起来不需要进行命中测试的层 - 刚刚绘制,在 iOS 上实现为 CALayers。
当绘制元素树需要进行命中测试时。看起来系统将CALayers 的子树组合成WKCompositingView。这是 UIView(至少在 iOS 上),并在绘图方面合成了它下面的子树,但也允许聚合元素参与命中测试。
通过这种方式,它作为一种设备,将 WebKit 之外的世界(远程世界?)与 WebKit 内部的东西树(“本地”东西?)连接起来,因此它们是“RemoteTreeViews”。
所以WKCompositingView 是参与绘制和命中测试的复合 HTML 内容树中的主机定义级别。
这完全基于我自己对代码的探索,可能是错误的。如果有知识的人有更清晰的解释,我一定会向他们的专业低头。
(因为它是 WebKit 开源项目的一部分,所以 Apple 没有记录它)
【讨论】: