我正在尝试创建一个活动指示器,并在功能执行期间显示它,但是它似乎无法正常工作...
我先调用活动视图,然后调用要花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
我想念什么?