【发布时间】:2013-09-10 11:10:08
【问题描述】:
我创建了一个简单的UIActivityIndicatorView,负责通知用户特定任务的执行结束。我的实现如下:
UIActivityIndicatorView *spinner = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhite];
spinner.center = self.imageView.center;
[self.imageView addSubview:spinner];
[spinner startAnimating];
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0), ^{
UIImage *filteredImage = ...some filtering...;
self.imageView.image = filteredImage;
[self.imageView setNeedsDisplay];
dispatch_async(dispatch_get_main_queue(), ^{
[spinner stopAnimating];
});
});
但是,当我运行应用程序时,旋转的轮子消失了,过了一会儿图像更新了。您是否有任何关于此延迟的提示?
编辑:setNeedsDisplay 和 stopAnimating 指令以正确的顺序调用。但是,UIImageView 需要一段时间才能更新其内容。
提前谢谢你。
【问题讨论】:
-
您可以在 stopAnimating 行和 setNeedsDisplay 行的上方放置 log on,这样您就可以更好地了解首先记录的内容。
-
顺序正确:在动画停止前调用
setNeedsDisplay函数。但是,图像需要一段时间才能更新。 -
不知道,但有 1 条建议,如果您想强制实现所需的输出,那么您可以延迟调用一个方法并将您的活动指示器停止;)
标签: iphone ios user-interface progress-bar delay