Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios UIImageView延迟绘制_Ios_Concurrency_Uiimageview - Fatal编程技术网

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来完成它