WebKit 中的 WKCompositingView 是什么?

What is a WKCompositingView in WebKit?

谁能解释一下 WKCompositingView 实际上是什么?搜索 Apple 文档没有提供任何结果。看起来它包含网站内容,并且大小可能与其包含的 webView 不同。

我真的不太了解WebKit 以及它是如何实现的,但它是开源的,你可以去看看代码。所以我做到了。

查看 WebKit 源代码,WKCompositingView 在文件 RemoteLayerTreeViews.mm 中定义。通过界面 a WKCompositingViewUIView.

我不能 100% 确定,但看起来 WebKit 在渲染时生成了信息“层”HTML。

看起来不需要命中测试的层 - 刚刚绘制的层在 iOS 上实现为 CALayers

当需要对绘制元素树进行命中测试时。看起来系统将CALayers的子树合并成了一个WKCompositingView。这个一个UIView(至少在iOS上)并且在绘制方面复合了它下面的子树,但也允许聚合元素参与命中测试.

通过这种方式,它作为一种设备将 WebKit 外部的世界(远程世界?)与 WebKit 内部的东西树(“本地”东西?)连接起来,所以它们是“RemoteTreeViews”。

因此 WKCompositingView 是参与绘图和命中测试的合成 HTML 内容树中主机定义的级别。

这完全基于我自己对代码的探索,可能是错误的。如果有知识渊博的人有更清楚的解释,我当然会向他们的专业知识鞠躬。

(因为它是 WebKit 开源项目的一部分,所以它没有被 Apple 记录)