【问题标题】:UIImageView draw with delayUIImageView 延迟绘制
【发布时间】:2013-06-04 06:34:31
【问题描述】:

我在UIImageView 上画图时遇到了问题。我得到了方法[className drawPoint:(CGPoint)point](这个方法可以画点而且效果很好)

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

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

【问题讨论】:

    标签: ios concurrency uiimageview


    【解决方案1】:

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

    【讨论】:

    • 我建议您使用animateWithDuration。你试过的方式不是很方便。
    【解决方案2】:

    尝试使用:

     [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:或者,如果点来自数组,您当然可以在循环中执行:)

    【讨论】:

    • 感谢 xexe!你让我开心)现在我会尝试用 dispatch_async 来做这件事
    猜你喜欢
    • 1970-01-01
    • 2017-07-26
    • 2012-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-14
    • 2010-12-22
    • 1970-01-01
    相关资源
    最近更新 更多