我有一组 uibezierpath。
我怎么能按顺序绘制每条路径,但有延迟,所以它看起来是动画的?
我目前正在像这样绘制整个数组(从技术上讲,我认为它是顺序的,但它一次出现的速度太快了):

for (UIBezierPath * path in myArrayOfBezierPaths){
    path.lineWidth=3;
    [path stroke];
    [path release];
}

最后,我怎样才能让每条路径变成不同的颜色?

最佳答案

您需要多次重绘 View ,每次都绘制更多的路径。要做到这一点,您需要使用某种计时器并有一种方法来跟踪您正在绘制的路径。

要跟踪路径,您可以使用 NSInteger 实例变量并在每次绘制另一条路径时增加它,然后在 -drawRect: 中检查该变量的值并绘制适当数量的路径。

然后,您将实现一个更新 ivar 并重绘 View 的方法。这是一个非常简单的版本:

//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];
    }
}

就颜色而言,您正在创建路径,因此您可以将它们设置为您喜欢的任何颜色。

关于objective-c - 连续绘图/动画 iOS,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6481376/

10-13 03:50