我想达到的效果是这样的:
点击按钮
↓
图片ImageView处的占位图消失
↓
图片处开始显示菊花动画图标
↓
旋转五秒中
↓
菊花图标停止并消失
↓
显示新的图片
部分代码如下:
class ViewController: UIViewController {
@IBOutlet weak var imageView: UIImageView!
@IBOutlet weak var activityIndicator: UIActivityIndicatorView!
@IBAction func clickButton(_ sender: UIButton) {
imageView.image = nil
activityIndicator.startAnimating()
sleep(5)
activityIndicator.stopAnimating()
imageView.image = UIImage(named: "cat")
}
}
页面设计
实际效果是点击按钮之后,什么都没有发生,五秒钟之后换成了新的图片。
请问正确的写法应该是怎样的?
我的全部源码在这里:https://github.com/Stanley-Ti...
编程环境是Xcode8 Swift3
최고는 아니지만 두 가지 아이디어를 알려 드리겠습니다. 우선 메인스레드에 sleep(5)이 작성되어 있어서 국화는 실제로 애니메이션을 시작했지만, sleep(5)가 실행되면 메인스레드는 sleep을 하게 되고, runloop는 터치이벤트를 받지 않고 업데이트를 하지 않게 됩니다. UI 인터페이스에서는 국화의 애니메이션 효과를 볼 수 없습니다. 5초 후에 메인 스레드가 활성화되면 stopAnimating이 직접 실행된 후 새로운 그림이 표시됩니다. GCD에서 제공하는 afterAPI를 사용할 수 있습니다.
으아악그래도 수면을 계속 사용하고 싶다면 하위 스레드를 열 수 있지만 더 번거롭습니다.
으아악직관, 수면에는 뭔가 문제가 있습니다(5).
sleep은 CPU의 작업 처리를 중지합니다. 이런 방식으로 활성화되면 UI를 업데이트할 수 없으며 아무 일도 일어나지 않습니다.
지연을 처리하려면 sleep()을 대체하기 위해 dispatch_after()를 사용하세요.