1

我一直在尝试绘制地图。我将美国的地图绘制为一系列 UIBezierPath(每个州的一个路径 - 使用 PaintCode 转换为 SVG 文件)。与此同时,我正在与 CAShapeLayer's 合作,并对它们的速度感到惊讶。我决定将 UIBezierPath 转换为 CAShapeLayer。它最终变得非常缓慢。即使我旋转设备,视图也会卡顿。有谁知道为什么会这么慢?似乎每当我用太多的 CAShapeLayer 填充视图时,它都会大大降低应用程序的速度。

这不是特定于代码的问题,我只是想知道您可以在应用程序中使用的 CALayer 的数量是否有限制。

4

2 回答 2

1

CAShapeLayer主要用于创建要设置动画的形状。因此,当您使用它时,每个修改都是动画的。我不知道UIBezierPath,但CAShapeLayer在光栅化过程中也使用抗锯齿,这需要离屏渲染,这是一项昂贵的任务。

于 2013-06-10T08:26:58.903 回答
0

屏幕外渲染包括shouldRasterize遮蔽(光栅化)反锯齿遮罩)阴影(压)遮罩(抗齿)所以如果你关闭opaque&shadows并打开光栅化它会更快。你会感觉到不同。但仍然会减慢应用程序。

于 2016-04-21T08:38:39.603 回答