在编写文件swift 3时更新进度条

时间:2017-01-06 16:09:50

标签: swift swift3 ios10

我使用swift 3编写iOS应用程序。我试图在循环中编写一堆文件并在UI中显示进度。循环:

  1. 写文件
  2. 检查剩余磁盘空间
  3. 更新用户界面和进度条
  4. 循环
  5. 在循环完成之前,UI不会更新。有趣的是,在循环开始之前,我在ViewDidAppear函数中用初始值FIRST THING更新UI,并且直到循环结束后才更新。这是一个代码示例:

    for _ in 0...100000 {
            let image = UIImage(name: "someimage_\(nameExt!).png")
            if let data = UIImagePNGRepresentation(image) {
                let filename = getDocumentsDirectory().appendingPathComponent("myimage_\(nameExt!).png")
                nameExt! = nameExt! + 1
                try? data.write(to: filename)
            }
    
                let currentSpace = getSpace()
                progress?.progress = abs( Float((capacity!-currentSpace)/capacity!) )
                let progressValue = progress?.progress
                progressLabel?.text = "\(progressValue! * 100) %"
                spaceRemaining?.text = "free space: \(currentSpace/1000000) MB"
                print("free space: \(currentSpace/1000000000) GB")
                print("\(progressValue! * 100) %")
                print("----------")
    }
    

1 个答案:

答案 0 :(得分:0)

UIProgressView的{​​{1}}属性默认为0到1之间的浮点值。因此,如果您的进度应该是50%,那么您需要将progress属性设置为0.5。

编写文件时,还需要确保更新主队列上的进度视图。这可能是您的UI直到最后才更新的原因。

progress