0

4.000 を超える CGPoints を持つ NSArray があります

[NSArray arrayWithObjects:
                   [NSValue valueWithCGPoint:CGPointMake(213, 30)], ...

私のUIViewController内からそれらの間の点または線を描きたいです。iOS デバイスに最適な方法は何ですか? thnx

4

1 に答える 1

2

スプライトまたはパーティクル生成を使用しようとしているように聞こえますか? 詳細がわからないので、一般的な回答しかできませんが、試してみてください。ポイントがすべて単純な 1 ピクセルの色付きのものであると仮定しましょう。グラデーションやパスは必要ありません。「x、y のピクセルを赤/緑/青に設定する」だけです。

CALayer4,000 個のオブジェクトを同時に簡単に操作できるはずです。

CALayer *rootLayer = [[self view] layer]; // assumes self is a view controller
NSMutableArray *mSprites = [NSMutableArray array]; // to store references to the layers

for (int i = 0; i < 4000; i++) {
    CALayer *layer = [CALayer layer];
    NSAssert1(layer != nil, @"failed to create CALayer #%i", i);

    layer.backgroundColor = [UIColor colorWithRed:... green:... blue:... alpha:1.0].CGColor;
    layer.frame = CGRectMake(rand(), rand(), 1.0, 1.0);

    [mSprites addObject:layer];
    [rootLayer addSublayer:layer];
}

self.my4000SpritesProperty = mSprites;

次に、それらを操作するときは、配列に移動してself.my4000SpritesProperty、レイヤーのフレームまたはその他のプロパティを変更します。

4,000 要素の場合、Core Animation で許容できるパフォーマンスが得られるはずです。

于 2012-06-12T13:33:02.430 に答える