代码之家  ›  专栏  ›  技术社区  ›  Skie

如何逐步更新进度条?

  •  0
  • Skie  · 技术社区  · 9 年前

    我的代码中,我每秒向数组添加一个常量,当数组更改时,如何每秒更新进度条?

    var array: [Int] = []
    
    override func viewWillAppear(_ animated: Bool) {
            upgradeArray()
        }
    
        func upgradeArray() {
            for i in 0...10 {
                sleep(1)
                array.append(i)
                print(i)
                let percentProgress = Float(Float(self.array.count)*100.0/10.0)
                progressBar.setProgress(percentProgress, animated: true)
            }
    
        }
    
    2 回复  |  直到 9 年前
        1
  •  1
  •   Frankie    9 年前

    使用计时器。假设进度视图为0到1,并且每秒递增0.1。。。

    var timer: Timer?
    var array = [String]()
    
    func doStuff() {
    
        timer = Timer.scheduledTimer(withTimeInterval: 1.0, repeats: true, block: { timer in
    
            self.array.append("foo")
    
            let change: Float = 0.1
            self.progressView.progress = self.progressView.progress + (change)
    
            if self.progressView.progress >= 1.0 {
                self.timer?.invalidate()
            }
        })
    }
    
        2
  •  0
  •   Skie    9 年前

    完成调度队列。全局(优先级:。默认)。异步

    func upgradeArray() {
            for i in 0...10 {
                DispatchQueue.global(priority: .default).async {
                    //sleep(1)
                    self.array.append(i)
                    print(i)
                    DispatchQueue.main.async(execute: {
                        let percentProgress = Float(Float(self.array.count)*100.0/10.0)
                        self.progressBar.setProgress(percentProgress, animated: true)
                    })
                }
            }
    
        }