我一直在尝试绘制地图。我绘制了美国地图作为一系列UIBezierPath(每个州的一条路径 - 用PaintCode转换SVG文件)。与此同时,我正在与CAShapeLayer合作,并对他们的速度感到惊讶。我决定将UIBezierPath转换为CAShapeLayer。它最终变得极其缓慢。即使我旋转设备,视图也会断断续续。有谁知道为什么会这么慢?似乎每当我用太多的CAShapeLayer填充视图时,它会大大减慢应用程序的速度。
这不是特定于代码的问题,我只是想知道您在应用程序中可以使用的CALayer数量是否有限制。
答案 0 :(得分:1)
CAShapeLayer
主要用于创建您将设置动画的形状。因此,当您使用它时,每个修改都是动画的。我不知道UIBezierPath
但CAShapeLayer
在光栅化过程中也使用了抗锯齿,这需要进行离线渲染,这是一项昂贵的任务。
答案 1 :(得分:0)
屏幕外渲染包括 shouldRasterize(光栅化) 面具(遮罩) 阴影(阴影) edge antialiasing(抗锯齿) group opacity(不透明) 因此,如果你关闭不透明和阴影并打开光栅,它会更快。你会感觉到不同。但仍然会减慢申请速度。