ios - 如何使用“CADdisplaylink”制作动画(不会制作动画)
问题描述
我正在尝试使用 CADdisplaylink 为名为“Miles”的标签设置动画,即使我没有收到任何错误,当我点击 UIButton 时动画也不会正确显示。我尝试自己修复它,但我真的不知道错误在哪里。
尝试在 viewDidLoad 中移动我的 CADdisplaylink 代码,但这意味着它会立即启动动画(我不知道该逻辑是否真的正确)。所以,把它改成我的 UIButton 动作代码,所以当它被按下时它会执行动画。它只会加起来'endValue = self.myCar.miles!+ 10' 然后崩溃,不让我按其他任何东西。
这是在 viewDidLoad 之前
@IBOutlet var labelMiles: UILabel!
let animationDuration = 1.5
let animationStartDate = Date()
这是在 viewDidLoad 和其他与动画无关的代码之后。
@IBAction func accelerateButton(_ sender: UIButton) {
// CAD display here; para animacion de MILES
let cadDisplay = CADisplayLink(target: self, selector: #selector(accelerateButton(_:)))
cadDisplay.add(to: .main, forMode: RunLoop.Mode.default)
guard let startValue = self.myCar.miles else { return () }
// myCar.addMiles(addToMiles: 10.0)
let endValue = self.myCar.miles! + 10
let now = Date()
let elapsedTime = now.timeIntervalSince(animationStartDate)
if elapsedTime > animationDuration {
self.labelMiles.text = "\(endValue)"
} else {
let percentage = elapsedTime / animationDuration
let value = percentage * (endValue - startValue)
self.labelMiles.text = "\(value)"
}
/*myCar.acceletate()
updateView()*/
}
“accelerteButton”应该触发一个从“startValue”开始计数的动画,[这是我在 viewDidLoad 中用其他值确定的默认值,例如:]
myCar = Car(miles: 12000.50, tires: 4, model: "SUV Santa Fe", age: 2019, companyName: "Hyundai", color: #colorLiteral(red: 0.05882352963, green: 0.180392161, blue: 0.2470588237, alpha: 1), imageName: UIImage(named: "Hyundai.jpg"))
myGarage.append(myCar)
到“endValue”,它应该只添加 10.0(因为它是一个 Double)。有没有我遗漏的错误?
解决方案
推荐阅读
- python - 使用 ray.serve 传递多个对象以进行并行执行
- hazelcast - Hazelcast 突然开始大量伐木
- authentication - 保护 CSP 报告 uri 有效负载
- java - NullPointerException 分配另一个变量的值
- c++ - 对“MessageDlg”的调用没有匹配的函数
- reactjs - React 测试库表单提交事件与真实浏览器不同
- ruby-on-rails - 设计显示未经身份验证的消息而不是 signed_up_but_unconfirmed
- javascript - 如何有效地删除与另一张纸上的条件匹配的行?
- node.js - Nodejs 和 Mailgun:从文件系统发送生成的附件 *not*
- html - 如何在 CSS 中包装元素而不是单词