Ios UIImageView延迟绘制
我在Ios UIImageView延迟绘制,ios,concurrency,uiimageview,Ios,Concurrency,Uiimageview,我在UIImageView上延迟绘图时遇到问题。我得到了方法[className drawPoint:(CGPoint)point](这个方法可以绘制point,而且效果很好) 接下来,我想以1秒的延迟从圆形阵列中绘制3个点,如果使用[自执行选择器:withObject:afterDelay:我将在延迟3秒后在UIImageView上看到所有3个点。但我想画点1,然后在1秒后画点2,然后在1秒后画点3 我也尝试过使用dispatch\u async,但没有得到预期的结果如果要错开视图的绘图,则不
UIImageView
上延迟绘图时遇到问题。我得到了方法[className drawPoint:(CGPoint)point]
(这个方法可以绘制point,而且效果很好)
接下来,我想以1秒的延迟从圆形阵列中绘制3个点,如果使用[自执行选择器:withObject:afterDelay:
我将在延迟3秒后在UIImageView
上看到所有3个点。但我想画点1,然后在1秒后画点2,然后在1秒后画点3
我也尝试过使用
dispatch\u async
,但没有得到预期的结果如果要错开视图的绘图,则不适合使用drawRect
。更好的解决方案是在drawRect
中绘制您想要绘制的所有内容(或者将交错的元素分成不同的视图,每个视图都有自己的drawRect
)要使用UIView
的class方法animateWithDuration
切换隐藏属性,如果要错开视图的绘图,drawRect
不是执行此操作的地方。更好的解决方案是在drawRect
中绘制您想要绘制的所有内容(或者将交错的元素分成不同的视图,每个视图都有自己的drawRect
),并使用UIView
的class方法animateWithDuration
切换隐藏属性。尝试使用:
[self performSelectorInBackground:@selector(drawThreePoints) withObject:nil];
三点法:
-(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];
}
提取点:方法:
-(void)drawPoint:(CGPoint)point{
[className drawPoint:point];
}
UPD:或者,如果点来自数组,当然可以在循环中执行:)尝试使用:
[self performSelectorInBackground:@selector(drawThreePoints) withObject:nil];
三点法:
-(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];
}
提取点:方法:
-(void)drawPoint:(CGPoint)point{
[className drawPoint:point];
}
UPD:或者,如果点来自数组,当然可以在循环中执行:)我建议您使用
animateWithDuration
。您尝试的方式不太方便。我建议您使用animateWithDuration
。你尝试的方式不太方便。谢谢你!你让我高兴)现在我要试着用dispatch\u asyncXe!你使我的一天)现在我将尝试用dispatch\u async来完成它