如何在 swift 中逐步更改 UILabel 文本

  • 本文关键字:UILabel 文本 swift swift
  • 更新时间 :
  • 英文 :


我尝试在我的应用程序中做一个加载屏幕,我希望它在UILabel中显示加载状态文本,所以我选择viewDidAppear覆盖函数来完成此操作,但结果是它只显示我设置的已完成文本。这是我在viewDidAppear的代码:

override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(false)
loadingicon.alpha = 0
statuslabel.alpha = 0
loadingicon.alpha = 0
statuslabel.alpha = 0
// change 2 to desired number of seconds
UIView.animate(withDuration: 0.7, animations: {
//self.imganimation.frame.origin.y -= 150
self.loadingicon.alpha = 1
self.statuslabel.alpha = 1
// self.loadingicon.frame.origin.y -= 50
// self.statuslabel.frame.origin.y -= 50
}, completion: nil)
self.statuslabel.text = "Loading the data"
sleep(5)
if CheckInternet.Connection(){
self.statuslabel.text = "Connection Success"
} else {
}
}

如您所见,我尝试使系统休眠 5 秒钟,以允许它逐步显示我的文本,但"加载数据"文本消失了,它仅在该过程完成后向我显示"连接成功"文本如何处理此问题

使用 GCD 添加当前时间的延迟。

DispatchQueue.main.asyncAfter(deadline: .now() + 5) {
// Add the code you want to execute after the delay
}
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(false)
loadingicon.alpha = 0
statuslabel.alpha = 0
loadingicon.alpha = 0
statuslabel.alpha = 0
// change 2 to desired number of seconds
UIView.animate(withDuration: 0.7, animations: {
//self.imganimation.frame.origin.y -= 150
self.loadingicon.alpha = 1
self.statuslabel.alpha = 1
// self.loadingicon.frame.origin.y -= 50
// self.statuslabel.frame.origin.y -= 50
}, completion: nil)
self.statuslabel.text = "Loading the data"
DispatchQueue.main.asyncAfter(deadline: .now() + 5) {
if CheckInternet.Connection(){
self.statuslabel.text = "Connection Success"
} else {
}
}
}

最新更新