我遇到拖延UIImageView
的问题。我得到了方法[className drawPoint:(CGPoint)point]
(这个方法可以绘制点并且工作正常)
接下来我想在圆圈中以1秒的延迟从数组中绘制3个点,如果我使用[self performSelector:withObject:afterDelay:]
,我会在3秒延迟后看到UIImageView
上的所有3个点。但是我希望它在1秒钟之后绘制point1然后在1秒之后绘制点3。
我也曾尝试使用dispatch_async
,但没有得到理想的结果
答案 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:或者,如果点来自数组,你可以在循环中完成它,当然:)