ios - ProgressView 未在 iOS 中更新
问题描述
我知道这个问题在 StackOverflow 上被问过很多次,但我已经检查过了。我的问题是我在从 api hit 得到响应后在主线程上更新这样的进度条
dispatch_async(dispatch_get_main_queue(),^{
for (int i = 0; i < 5000; i++)
{
NSLog(@"%f",i);
[progressView setProgress:i/5000 animated:YES];
}
});
从这种方式我的progressivew没有更新但是当我设置静态数字时它正在工作
[progressView setProgress:0.7 animated:YES];
经过搜索,我发现浮点十进制数字存在问题。因为 i/5000 即使在 4999/5000 上也总是给出 0.000000。所以经过一番谷歌搜索后,我改变了
dispatch_async(dispatch_get_main_queue(),^{
for (int i = 0; i < 5000; i++)
{
float f = (float)i/5000;
[progressView setProgress:f animated:YES];
}
});
现在它正在更新,但进度视图不会连续更新,它是从 0 到 1 的最后一次跟踪更新
解决方案
你做对的第一个问题,整数除法总是会给你 0。
第二个问题是主线程上的 UI 更新 - 即使在那时也只是定期更新。现在您的代码也在主线程上运行,因此在您的代码执行时 UI 完全被阻塞。它只会在您的代码结束后才有机会更新,因此您只会看到最终值实际被渲染。
推荐阅读
- c++ - 在 QListWidget 中突出显示小部件
- azure - 如何在 Azure ARM 模板中为多个资源创建 GUID?
- arrays - 来自numpy数组或数组的多边形角
- swift - 如何检测 google 登录(使用 firebase)并在使用 swift 完成时关闭我的登录页面表视图?
- powershell - 无法在 powershell 中调用 json 文件
- google-cloud-dataflow - Apache 光束处理顺序元素
- ubuntu - IntelliJ 在 Ubuntu 上似乎无法正常工作,外部库无法扩展?
- swift - 工具栏、触控栏和菜单无法识别从 AppDelegate 启动窗口
- pdf - 在移动设备中索引 PDF - 在 PC 中工作
- java - 传输 ArrayList
意图之间的对象(Parceable、Serializable)抛出 NullPointerException