2013-06-04 3 views
0

У меня проблема с нанесением на UIImageView с задержкой. Я получил метод [className drawPoint:(CGPoint)point] (этот метод может рисовать точки, и это работает отлично)UIImageView draw with delay

Далее я хочу сделать 3 очка из массива в круг с задержкой 1 сек, и если я использую [self performSelector:withObject:afterDelay:] я буду видеть все 3 очка на UIImageView после 3-секундная задержка. Но я хочу, чтобы он рисовал point1, затем после 1 секунды point2, а затем после 1 секунды point3.

Я также пытался играть с dispatch_async, но не получить желаемого результата

ответ

1

Попробуйте использовать:

[self performSelectorInBackground:@selector(drawThreePoints) withObject:nil]; 

Метод drawThreePoints:

-(void)drawThreePoints{ 
    [NSThread sleepForTimeInterval:1]; 
    [self performSelectorOnMainThread:@selector(drawPoint:) withObject:POINT1 waitUntilDone:NO]; 
    [NSThread sleepForTimeInterval:1]; 
    [self performSelectorOnMainThread:@selector(drawPoint:) withObject:POINT2 waitUntilDone:NO]; 
    [NSThread sleepForTimeInterval:1]; 
    [self performSelectorOnMainThread:@selector(drawPoint:) withObject:POINT3 waitUntilDone:NO]; 
} 

drawPoint: Метод:

-(void)drawPoint:(CGPoint)point{ 
    [className drawPoint:point]; 
} 

UPD: Или, если точки из массива, вы можете сделайте это в петле, конечно :)

+0

спасибо xexe! вы делаете мой день) теперь я попробую сделать это с dispatch_async – Nils

2

Если вы хотите, чтобы разнести рисунок зрения drawRect не место, чтобы сделать это. Лучшим решением было бы нарисовать все, что вы хотите нарисовать в drawRect (или разделить ваши шахматные элементы на разные виды, каждый со своим собственным drawRect) и переключить скрытое свойство с помощью метода класса UIViewanimateWithDuration.

+0

I wo uld советует вам использовать 'animateWithDuration'. То, как вы пытались, не очень удобно. – ipinak

+0

Я уже пробовал, но не успел – Nils