我有一组 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/