iphone - View 层次结构刷新时序

标签 iphone cocoa uiview

我正在尝试在进行一些会阻塞 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/

相关文章:

ios - 将 JSON 日期格式化为 Swift 日期不起作用

iphone - uiimageview 的移动、缩放和旋转类

iphone - UIView定位相关问题(iOS)

ios - 调整 UITableViewCell 框架问题的大小

ios - 在导航 Controller 中设置后退按钮

cocoa - 实现从 NSImageView 拖动并将图像保存到文件

xcode - cocoa编译的应用程序资源保留文件夹结构吗?

objective-c - NSArrayController 上的 SelectionIndexes 只返回一个值

iphone - 我的 TouchBegan 方法中存在内存问题

ios - 在 Objective-C 的窗口中显示自定义 View