Вам необходимо перерисовать вид несколько раз, каждый раз рисуя новые пути. Для этого вам нужно использовать какой-нибудь таймер и иметь возможность отслеживать, какие пути вы рисуете.
Чтобы отслеживать пути, вы можете использовать переменную экземпляра NSInteger
и увеличивать ее каждый раз, когда рисуется другой путь, затем в -drawRect:
проверьте значение этой переменной и нарисуйте соответствующее количество путей.
Тогда вы бы реализовали метод, который обновляет ivar и перерисовывает представление. Вот очень упрощенная версия:
//assume pathsToDraw is an NSInteger ivar
//and that myArrayOfBezierPaths is an NSArray ivar
//containing UIBezierPath objects
- (void)startDrawingPaths
{
//draw the first path
pathsToDraw = 1;
[view setNeedsDisplay];
//schedule redraws once per second
[NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(updateView:) userInfo:nil repeats:YES];
}
- (void)updateView:(NSTimer*)timer
{
//increment the path counter
pathsDrawn++;
//tell the view to update
[view setNeedsDisplay];
//if we've drawn all our paths, stop the timer
if(pathsDrawn >= [myArrayOfBezierPaths count])
{
[timer invalidate];
}
}
Ваш метод рисования будет выглядеть примерно так:
- (void)drawRect:(CGRect)rect
{
NSInteger i = 0;
for (i = 0; i < pathsDrawn; i++)
{
UIBezierPath * path = [myArrayOfBezierPaths objectAtIndex:i];
path.lineWidth=3;
[path stroke];
}
}
Что касается цвета, вы создаете пути, поэтому вы можете делать их любым цветом, который вам нравится.