0

次のように定義されたパスがたくさんあります。

_shapeMutablePath = CGPathCreateMutable();
CGPathMoveToPoint(_shapeMutablePath, NULL, 95.97,36.29);
CGPathAddCurveToPoint(_shapeMutablePath, NULL, 96.02,29.11,90.75,23.00,83.54,21.40);
CGPathAddCurveToPoint(_shapeMutablePath, NULL, 62.64,66.59,64.11,66.96,65.66,67.12);
CGPathAddCurveToPoint(_shapeMutablePath, NULL, 74.52,68.04,82.49,62.03,83.47,53.69);
CGPathAddCurveToPoint(_shapeMutablePath, NULL, 83.57,52.83,83.59,51.98,83.54,51.15);
CGPathAddCurveToPoint(_shapeMutablePath, NULL, 90.74,49.56,96.01,43.45,95.97,36.29);
CGPathCloseSubpath(_shapeMutablePath);

それらのいくつかは頻繁に再利用する必要があるので、この情報を保存および取得するための最良の方法は何でしょうか。定数ファイルに定数として保存することはできますか?

4

2 に答える 2

0

パスを作成するための計算時間は、画面上に描画するための時間と比較して何もありません。したがって、静的な方法などを使用してオンデマンドでパスを作成することは問題ではありません。

または、再利用するさまざまなパスを格納する静的クラスを作成することもできます。

于 2012-09-14T20:45:39.763 に答える
0

このような遅延読み込みはいつでも可能です

プロパティを追加する

@property (nonatomic, assign, readonly) CGMutablePathRef shapeMutablePath;

次に、ゲッターをオーバーライドします

- (CGMutablePathRef)shapeMutablePath;
{
  if (!_shapeMutablePath) {
    _shapeMutablePath = CGPathCreateMutable();
    CGPathMoveToPoint(_shapeMutablePath, NULL, 95.97,36.29);
    CGPathAddCurveToPoint(_shapeMutablePath, NULL, 96.02,29.11,90.75,23.00,83.54,21.40);
    CGPathAddCurveToPoint(_shapeMutablePath, NULL, 62.64,66.59,64.11,66.96,65.66,67.12);
    CGPathAddCurveToPoint(_shapeMutablePath, NULL, 74.52,68.04,82.49,62.03,83.47,53.69);
    CGPathAddCurveToPoint(_shapeMutablePath, NULL, 83.57,52.83,83.59,51.98,83.54,51.15);
    CGPathAddCurveToPoint(_shapeMutablePath, NULL, 90.74,49.56,96.01,43.45,95.97,36.29);
    CGPathCloseSubpath(_shapeMutablePath);
  }
  return _shapeMutablePath;
}

また、deallocでクリーンアップする必要があります

- (void)dealloc;
{
  CGPathRelease(_shapeMutablePath);
}
于 2012-09-14T23:07:25.093 に答える