UIImageView延迟绘制

时间:2013-06-04 06:34:32

标签: ios concurrency uiimageview

我遇到拖延UIImageView的问题。我得到了方法[className drawPoint:(CGPoint)point](这个方法可以绘制点并且工作正常)

接下来我想在圆圈中以1秒的延迟从数组中绘制3个点,如果我使用[self performSelector:withObject:afterDelay:],我会在3秒延迟后看到UIImageView上的所有3个点。但是我希望它在1秒钟之后绘制point1然后在1秒之后绘制点3。

我也曾尝试使用dispatch_async,但没有得到理想的结果

2 个答案:

答案 0 :(得分:2)

如果您想错开视图的绘制,drawRect不是这样做的地方。更好的解决方案是在drawRect中绘制您想要绘制的所有内容(或将交错的元素分离到不同的视图中,每个视图都使用自己的drawRect),并使用UIView切换隐藏的属性类方法animateWithDuration

答案 1 :(得分: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:或者,如果点来自数组,你可以在循环中完成它,当然:)