从CashApelayer获得真正的不良表现



我有一个存储在大文件中的图形,并将其分解为很多 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);

i使用CGPathAddPath将所有路径合并到4-5个路径中,然后将每个路径添加到CAShapeLayer中。我将CAShapeLayers连接到如下:

的视图
for (int i = 0; i < [_graphic.shapeLayers count]; i++)
{
    [self.layer addSublayer:[_graphic.shapeLayers objectAtIndex:i]];
}

当我在图形所在的同一屏幕上拔出模态视图时,图形的绘制是正确的。还注意到,绘制形状需要大量时间,总的来说,当我试图离开它并转到其他导航控制器时,似乎在屏幕上都有权衡。在运行时间配置文件时,我注意到大多数时间都在CALayer layoutSublayersCALayer drawInContext中。

该图形确实有很多路径,但是并不是那么复杂,我认为iOS应该有很多麻烦。当我在绘制中手动绘制这些路径时,我没有得到这种效果。另外,专家告诉我,以这种样式绘制图形可以更好地表现出色。这使我相信我在某个地方做错了什么。

尝试在所有CAShapeLayersself.layer上将shouldRasterize属性设置为YES

相关内容

  • 没有找到相关文章

最新更新