我有一个存储在一个大文件中的图形,它被分解成很多mutablePaths
类似的内容:
mutablePath = CGPathCreateMutable();
CGPathMoveToPoint(mutablePath, NULL, 123.70,49.23);
CGPathAddCurveToPoint(mutablePath, NULL, 124.57,54.05,124.06,58.98,123.43,63.80);
CGPathAddCurveToPoint(mutablePath, NULL, 123.09,66.42,122.70,69.03,122.43,71.66);
CGPathAddCurveToPoint(mutablePath, NULL, 121.64,81.02,121.35,83.58,120.92,86.11);
CGPathCloseSubpath(mutablePath);
CGPathAddPath(outlineMutablePath, NULL, mutablePath);
CGPathRelease(mutablePath);
我使用 将所有路径合并为 4-5 个路径CGPathAddPath
,然后将每个路径添加到CAShapeLayer
. 我将其附加CAShapeLayers
到如下视图:
for (int i = 0; i < [_graphic.shapeLayers count]; i++)
{
[self.layer addSublayer:[_graphic.shapeLayers objectAtIndex:i]];
}
图形正在正确绘制,但是,当我在图形所在的同一屏幕上拉出模态视图时,模态视图在出现在屏幕上时会非常糟糕。还注意到绘制形状需要相当长的时间,一般来说,当我试图离开它并转到不同的导航控制器时,它似乎会压低屏幕。在运行时间配置文件时,我注意到大部分时间都花在了CALayer layoutSublayers
和中CALayer drawInContext
。
该图形确实有很多路径,但并没有那么复杂,以至于我认为iOS
绘制它应该有这么多的麻烦。当我在 drawRect 中手动绘制这些路径时,我没有得到这种效果。另外,一位专家告诉我,以这种风格绘制图形会更好地提高性能。这让我相信我在某处做错了什么。