我正在尝试在进行一些会阻塞 UI 的密集计算之前向我的 View 层次结构添加进度表或其他“我现在很忙”通知。我的代码看起来像这样:
//create view
[currentTopView addSubView:imBusyView];
//some initialization for the intense computation
[computation startComputing];
不幸的是,我的进度表直到计算完成后才显示。看起来 View 在运行循环完成之前不会重新绘制。我非常确定 setNeedsDisplay 和 setNeedsLayout 也会等到运行循环完成。
如何立即显示 View ?
最佳答案
仅当代码将控制权返回给运行循环时才会发生重绘。因此,最简单的方法是安排零延迟的 startComputing 调用。这样,它将在下一次运行循环迭代期间执行(在重绘之后):
[computation performSelector:@selector(startComputing) withObject:nil afterDelay:0.0];
但请注意,除非您在另一个线程中进行计算,否则您将无法在计算期间更新 UI。
关于iphone - View 层次结构刷新时序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1736294/