我尝试在我的应用程序中做一个加载屏幕,我希望它在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 {
}
}
}