swift - 如何在swift中逐步更改UILabel文本
问题描述
我正在尝试在我的应用程序中做一个加载屏幕,我希望它显示加载状态文本,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
}
推荐阅读
- java - 如何在 java-selenium 中不使用 findElement() 或 findElements() 来检查元素的存在?
- linux - Linux 内核中的 VM_MIXEDMAP 和 VM_PFNMAP 标志是什么意思?
- excel - 针对另一张工作表中的匹配字段复制数据
- docker - 在 Bitbucket 中运行测试容器
- rest - 在 Power Apps 中使用 POST 请求的响应
- c - strcmp 给出错误的输出
- c# - 访问一个类内、另一个类内、命名空间内的变量
- sql - 如何从表中选择记录并按 ID 以逗号分隔的字符串对其进行排序?
- javascript - 如何在 webview 的 java 代码中使用 javascript 值?
- php - 获取会话 cookie 不会在 Firefox 上发送