我正在尝试使用CADdisplaylink为称为“ Miles”的标签设置动画,即使没有收到任何错误,在我点击UIButton时动画也无法正确显示。我尝试自己修复它,但我真的不知道错误在哪里。
试图将我的CADdisplaylink代码移动到viewDidLoad中,但这意味着它将立即开始动画(我不知道该逻辑是否真的正确)。因此,将其更改为我的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)。 我有什么错误吗?