我正在尝试制作一个书写文本的动画,有人建议我这段代码
extension UILabel {
func animation(typing value: String, duration: Double){
for char in value {
self.text?.append(char)
RunLoop.current.run(until: Date() + duration)
}
}
}
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
animationMainLabel.text = ""
animationMainLabel.animation(typing: "[BE YOUR OWN GODDESS \nWITH STEYA COSMETICS.]", duration: 0.1)
}
它在 iPhone 模拟器上运行良好,但在真实 iPhone 上动画不起作用。在真正的 iPhone 上,文本只是显示而已。怎么了?
您的代码会阻塞主线程直到完成,这会冻结 UI。我不确定为什么它甚至可以在模拟器上运行。您需要避免阻塞主线程,以便 UI 可以随时更新。
您可以这样做的一种方法是:
DispatchQueue.main.asyncAfter(deadline: .now() + duration)