我使用swift 3编写iOS应用程序。我试图在循环中编写一堆文件并在UI中显示进度。循环:
在循环完成之前,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("----------")
}
答案 0 :(得分:0)
UIProgressView
的{{1}}属性默认为0到1之间的浮点值。因此,如果您的进度应该是50%,那么您需要将progress属性设置为0.5。
编写文件时,还需要确保更新主队列上的进度视图。这可能是您的UI直到最后才更新的原因。
progress