ios - 如果仍在进行中再次执行,则终止并重新启动动画
问题描述
我有一个按钮,每次按下它都会以打字机风格为标签的文本(Hello World!)设置动画。如果我在动画仍在进行时按下按钮,则文本会在动画的当前点再次打印,从而产生如下内容:
地狱Hello World!o 世界!
我正在使用扩展,所以我无法添加变量,我不确定如何在没有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)
}
}
}
}
}
解决方案
推荐阅读
- django - 带有从请求对象分配的字段的 Django 单元测试表单
- c# - 亚马逊销售伙伴 API 请求
- node.js - 无法按照协议解析临时密钥响应
- python - 即使输出层有任何大小,keras 神经网络如何找到要归因的类?
- python - 使用 selenium XPATH 查找元素的替代方法?
- asp.net - axios post只返回空字符串(反应)?
- ios - 没有从 UIViewController 正确调用 UICollectionViewCell
- javascript - 标记未显示在传单地图上 - 树枝位置数组到传单地图
- batch-file - 在文本文件中搜索表达式的第一个显示并将其复制到剪贴板 - 使用 cmd
- javascript - 用cheerio从html元素中提取两个文本值