使用动画显示颜色顺序(快速)

时间:2018-07-16 09:07:38

标签: ios swift animation uiviewanimation

嗨,我是Swift的新手,我想为iPhone创建一个色彩记忆游戏,其中您的应用为您提供了一系列颜色,您必须通过按右按钮来重复它。每当您按上一个序列的右键时,该序列就变得越来越长。

我希望该应用通过在按钮上使用动画来显示按下了哪个按钮。序列将使按钮闪烁,然后用户可以重新创建序列。

我有一个执行flash()的方法,该方法是类的一部分,该类是UIButton的扩展

COALESCE(MIN(D), '2119-01-01')

当我对一系列按钮执行此方法时,它会同时闪烁按该顺序编写的所有按钮。当然,这不是我想要的方式,我希望按钮一个接一个地闪烁。

 func flash() {

    let flash = CABasicAnimation(keyPath: "opacity")
    flash.duration = 0.2
    flash.fromValue = 1
    flash.toValue = 0.1
    flash.timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionEaseInEaseOut)
    flash.autoreverses = true
    flash.repeatCount = 1

    layer.add(flash, forKey: nil)
}

当我执行此代码按钮时,1,2和3同时闪烁。有没有办法来解决这个问题?还是动画不是循环序列的正确方法。

1 个答案:

答案 0 :(得分:1)

尝试一下

var currentButtonIndex = 0
func doPattern()
{
    let currentButton = self.buttons[self.currentButtonIndex]
    UIView.animateKeyframes(withDuration: 1, delay: 0, options: [.autoreverse], animations: {
        currentButton.alpha = 0
    }) { (complete) in
        currentButton.alpha = 1
        if self.currentButtonIndex == self.buttons.count - 1
        {
            self.currentButtonIndex = 0
            return
        }

        self.currentButtonIndex += 1
        self.doPattern()
    }
}