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 ~ 5CGPathAddPath
つのパスに統合し、それぞれを に追加しCAShapeLayer
ます。CAShapeLayers
次のようなビューにアタッチします。
for (int i = 0; i < [_graphic.shapeLayers count]; i++)
{
[self.layer addSublayer:[_graphic.shapeLayers objectAtIndex:i]];
}
グラフィックは正しく描画されていますが、グラフィックが表示されている同じ画面でモーダル ビューを表示すると、画面に表示されるときにモーダル ビューがひどく途切れます。また、形状を描画するのにかなりの時間がかかることに気付きました。一般的に、画面を離れて別のナビゲーション コントローラーに移動しようとすると、画面が重くなるようです。CALayer layoutSublayers
時間プロファイルを実行すると、ほとんどの時間が費やされていることに気付きましたCALayer drawInContext
。
グラフィックには多くのパスがありますが、それほど複雑ではなく、iOS
描画にそれほど苦労する必要はありません。drawRect でこれらのパスを手動で描画していたとき、この効果が得られませんでした。さらに、専門家から、このスタイルでグラフィックを描画するとパフォーマンスが向上すると言われました。これにより、どこかで何か間違ったことをしていると信じるようになります。