我有一个Button,每次按下该按钮时,它都会以打字机样式为Label的文本(Hello World!)设置动画。如果在动画仍在进行时按“按钮”,则文本将在动画的当前位置再次打印其自身,从而产生如下内容:
HellHello World!o World!
我正在使用扩展程序,因此我无法添加变量,并且不确定在没有UILabel
扩展程序的情况下如何执行动画。解决此问题的最简单方法是什么?
@IBAction func buttonClicked(_ sender: Any) {
self.label.animate(newText: label.text ?? "Hello World!", characterDelay: 0.05)
}
extension UILabel {
func animate(newText: String, characterDelay: TimeInterval) {
DispatchQueue.main.async {
self.text = ""
for (index, character) in newText.enumerated() {
DispatchQueue.main.asyncAfter(deadline: .now() + characterDelay * Double(index)) {
self.text?.append(character)
}
}
}
}
}