2012-06-12 4 views
0

У меня есть NSArray с более чем 4,000 CGPointsDraw 4.000 точек или линий в ИО Objective-C внутри UIViewController

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

и хотите, чтобы нарисовать точки или линии между ними внутри моего UIViewController. Каков наилучший способ для устройств iOS? thnx

+0

Что вы хотите сделать с этим? Будут ли очки менять или это одноразовый розыгрыш? –

+0

Сначала я хочу начать рисовать один раз. позже я хочу, чтобы пальцы касались, чтобы привлечь точки силой, изменив их положение (и перерисовывая). – headkit

+0

Вы намерены перерисовать его, когда пользователь перемещает палец или после того, как палец поднят? –

ответ

2

Похоже, вы пытаетесь работать со спрайтами или генерированием частиц? Не зная подробностей, я могу дать общий ответ, но дайте ему шанс. Предположим, что все точки - это простые 1-пиксельные цветные штучки. Никаких градиентов или путей не требуется, просто «установите пиксель в x, y в красный/зеленый/синий».

Вы должны иметь возможность легко манипулировать 4000 CALayer объектов одновременно:

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 и изменить кадры слоев или другие свойства.

Для 4000 элементов вы должны увидеть приемлемую производительность с помощью Core Animation.

+1

offtopic: почему бы не рисовать 4000 точек в методе drawRect? – CarlJ

+0

, потому что представление является динамическим, и для него нет дополнительного класса. – headkit

+0

Поскольку чертеж 4000 элементов с графикой Кварц/Ядро, вероятно, будет слишком медленным, чтобы его можно было использовать. –