より多くのパスを描画するたびに、ビューを複数回再描画する必要があります。これを実現するには、ある種のタイマーを使用し、描画しているパスを追跡する方法が必要です。
パスを追跡するには、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];
}
}
色に関しては、パスを作成しているので、好きな色にパスを作成できます。