为什么活动指示器没有在正确的时间出现在我的代码中?

时间:2018-09-27 17:53:50

标签: ios swift uiactivityindicatorview

我正在尝试创建一个活动指示器,并在功能执行期间显示它,但是它似乎无法正常工作...

我先调用活动视图,然后调用要花3秒钟执行的函数,然后最后删除视图,但是在我的代码中,事情有所不同,该函数执行并且仅在3秒后立即添加和删除指标(仅几分之一秒)...

我的指标视图...

let activityView: UIActivityIndicatorView = {
    let act = UIActivityIndicatorView(style: UIActivityIndicatorView.Style.whiteLarge)
    act.translatesAutoresizingMaskIntoConstraints = false
    act.hidesWhenStopped = true
    return act
}()

添加或删除指标视图的功能...

func addRemoveActivity(add: Bool, loadMessage: String){
    if add {
        let container: UIView = {
           let cont = UIView()
            cont.translatesAutoresizingMaskIntoConstraints = false
            cont.backgroundColor = UIColor.black.withAlphaComponent(0.4)
            cont.layer.cornerRadius = 10
            cont.alpha = 0
            return cont
        }()

        let label: UILabel = {
            let lab = UILabel()
            lab.text = loadMessage
            lab.translatesAutoresizingMaskIntoConstraints = false
            lab.font = UIFont.boldSystemFont(ofSize: 15)
            lab.textAlignment = .center
            lab.textColor = .white
            return lab
        }()

        activityView.startAnimating()

        container.addSubview(label)
        container.addSubview(self.activityView)
        self.view.addSubview(container)

        // add constraints...

        container.centerXAnchor.constraint(equalTo: self.view.centerXAnchor).isActive = true
        container.centerYAnchor.constraint(equalTo: self.view.centerYAnchor).isActive = true
        container.widthAnchor.constraint(equalToConstant: 120).isActive = true
        container.heightAnchor.constraint(equalToConstant: 150).isActive = true

        label.topAnchor.constraint(equalTo: container.topAnchor, constant: 10).isActive = true
        label.widthAnchor.constraint(equalTo: container.widthAnchor).isActive = true
        label.heightAnchor.constraint(equalToConstant: 20).isActive = true

        self.activityView.centerYAnchor.constraint(equalTo: container.centerYAnchor, constant: 30).isActive = true
        self.activityView.centerXAnchor.constraint(equalTo: container.centerXAnchor).isActive = true

        UIView.animate(withDuration: 0.3) {
            container.alpha = 1
        }
    } else {
        let activitySuperView = self.activityView.superview!
        UIView.animate(withDuration: 0.3, animations: {
            activitySuperView.alpha = 0
        }) { (true) in
            activitySuperView.removeFromSuperview()
            self.activityView.stopAnimating()

        }
    }
}

在这里,我点击了一个调用该函数ocurrenciesWords()的按钮。此函数只是使用字符串执行一些重复性的任务,大约需要3秒钟才能完成,并添加指标视图并显示经过的时间。...

@objc func activateButton(){
    self.beginTime = Date().timeIntervalSince1970
    self.addRemoveActivity(add: true, loadMessage: "loading")
    self.ocurrenciesWords(text: "12345678901234567890")
    self.addRemoveActivity(add: false, loadMessage: "")
    self.endTime = Date().timeIntervalSince1970
    print("elapsed Time:",self.endTime - self.beginTime)
}

打印语句打印经过时间:3.310087643

我想念什么?

0 个答案:

没有答案