UIProgressView 只更新值而不是 UI

Posted

技术标签:

【中文标题】UIProgressView 只更新值而不是 UI【英文标题】:UIProgressView only Update Values Instead of UI 【发布时间】:2016-07-05 20:05:03 【问题描述】:

我正在对图像进行分析。当我遍历所有像素时,我想获得有关进度的反馈。这是我的代码:

       for _ in 0 ..< height 
            for _ in 0 ..< width 
                analyzeImage(currentPixel)
                currentPixel = currentPixel.successor()
            
            updateProgress()
        

func updateProgress() 
    self.fractionalProgress += self.fractionalRatio
    if (Int(self.fractionalProgress / self.fractionalRatio) % 20) == 0 
        self.progressBar.progress = self.fractionalProgress
        print(self.progressBar.progress)
    

我在嵌套的 for 循环中调用了 updateProgress。 打印结果正在更新,但条形图在视觉上没有变化。它只在最后更新。 感谢您的任何帮助!!!!

【问题讨论】:

【参考方案1】:

UIKit 是单线程的,只能从主线程运行。如果你有一个循环在主线程上执行工作,那么 UIKit 将在你的代码完成运行并且你的方法返回之后才会更新。

为了显示进度,您需要在后台线程上执行工作并在主线程上更新 UIKit。阅读Concurrency Programming Guide。

【讨论】:

以上是关于UIProgressView 只更新值而不是 UI的主要内容,如果未能解决你的问题,请参考以下文章

UI第九节——UIProgressView

UIProgressView 动画只能正常工作一次

调试器如何只看到值而不是变量的内存地址

动态更新 UIProgressView 的进度

雄辩的关系:只返回一个值而不是整行

如何更新显示的值而不是每次在 Python 中打印?