0

我有一个超过 4.000 CGPoints 的 NSArray

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

并想从我的 UIViewController 中绘制它们之间的点或线。iOS设备的最佳方式是什么?谢谢

4

1 回答 1

2

听起来您正在尝试使用精灵或粒子生成?在不知道更多细节的情况下,我只能给出一个笼统的答案,但让我试一试。让我们假设这些点都是简单的 1 像素彩色物体。不需要渐变或路径,只需“将 x、y 处的像素设置为红色/绿色/蓝色”。

您应该能够轻松地CALayer同时操作 4,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 回答