更新时间:2022-11-19 08:04:39
给你提供两个思路吧,不一定是***的,但愿对你有用吧。首先sleep(5)是写在主线程中,那么实际上菊花是已经开始动画了,不过当执行到sleep(5)的时候主线程休眠了,runloop不接收触控事件也不更新UI界面,所以你看不到菊花的动画效果,当主线程5秒后被唤醒,直接执行了stopAnimating,然后展示新图片。可以用GCD提供的afterAPI:
imageView.image = nil
activityIndicator.startAnimating()
let delay = DispatchTime.now() + DispatchTimeInterval.seconds(5)
DispatchQueue.main.asyncAfter(deadline: delay) {
activityIndicator.stopAnimating()
imageView.image = UIImage(named: "cat")
}
如果还想继续用sleep那可以开辟一个子线程,不过比较麻烦:
DispatchQueue.global().async {
DispatchQueue.main.async {
imageView.image = nil
activityIndicator.startAnimating()
}
sleep(5)
DispatchQueue.main.async {
activityIndicator.stopAnimating()
imageView.image = UIImage(named: "cat")
}
}