gpt4 book ai didi

cocoa-touch - 在另一个线程中运行 MBProgressHUD?

转载 作者:行者123 更新时间:2023-12-03 13:20:31 25 4
gpt4 key购买 nike

我正在使用 MBProgressHUD在填充 UITableView 时显示“忙碌”动画以使用用户。 UITableView阻塞主线程,因此动画在表格完成加载之前甚至不会出现。

有没有办法让忙碌的动画在另一个线程上运行 UITableView占据主线程?

最佳答案

UIKit 在运行循环完成当前循环时进行绘制。换句话说,如果您正在配置 View (例如 MBProgressHUD),则更改将在下一次运行循环迭代之前不可见。因此,如果您不允许通过阻塞主线程来旋转运行循环,则 UI 更改不会立即出现。

如果你不能在后台线程上做你的工作,你需要让运行循环完成它的循环,然后再在主线程上开始你的长时间运行的阻塞任务。

您可以通过在下一次运行循环迭代中安排执行来做到这一点。

// Setup and show HUD here

[self performSelector:@selector(myTask) withObject:nil afterDelay:0.001];

在 myTask 结束时隐藏 HUD。
或者您可以手动运行运行循环。
// Setup and show HUD here

[[NSRunLoop currentRunLoop] runUntilDate:[NSDate distantPast]];

// Insert myTask code here
// Hide the shown HUD here

或者(如果你可以使用 block )
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 0.001 * NSEC_PER_SEC), dispatch_get_main_queue(), ^(void){
// Insert myTask code here
});

关于cocoa-touch - 在另一个线程中运行 MBProgressHUD?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5685331/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com