如何使用“ CADdisplaylink”设置动画(不设置动画)

时间:2019-07-22 19:39:39

标签: ios swift animation

我正在尝试使用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)。 我有什么错误吗?

0 个答案:

没有答案