Swift - 通过 switch 语句为 CAGradientLayer 设置动画

Posted

技术标签:

【中文标题】Swift - 通过 switch 语句为 CAGradientLayer 设置动画【英文标题】:Swift - Animating CAGradientLayer via switch statement 【发布时间】:2016-04-07 19:47:57 【问题描述】:

我有一个通过 CAGradientLayer 生成的渐变背景。我还有一个 switch 语句,它根据 UI 的其他部分更新渐变层的颜色。它完美地工作,但是,渐变之间的“淡入淡出”非常非常快。我什至没有在 swift 项目中指定这一点。它只是自然地慢慢褪色。

我希望淡入淡出的持续时间为 0.5 秒。

这是我的 switch 语句。

    switch newValue
        case 1..<70:
        gradientLayer.colors = [gradientColor1a, gradientColor1b]
        case 70..<120:
        gradientLayer.colors = [gradientColor2a, gradientColor2b]
        case 120..<190:
        gradientLayer.colors = [gradientColor3a, gradientColor3b]
        case 190..<400:
        gradientLayer.colors = [gradientColor4a, gradientColor4b]
        default:
        gradientLayer.colors = [gradientColor1a, gradientColor1b]
    

我正在阅读的文档指出您可以使用 toValue / fromValue 进行动画处理,但是,我不知道如何在上面的 switch 语句中实现它。是否可以为此使用 CABasicAnimation?

如何根据我的开关值让这些渐变淡出 0.5 持续时间?谢谢。

【问题讨论】:

你知道如何在switch语句之外设置动画吗? 【参考方案1】:

你试过这样做吗?

CATransaction.setAnimationDuration(0.5)

你应该可以把它放在你的 switch 语句之上。

查看此答案以获得更多见解Change animation time for properties of a CALayer

【讨论】:

以上是关于Swift - 通过 switch 语句为 CAGradientLayer 设置动画的主要内容,如果未能解决你的问题,请参考以下文章

在 Swift 中将 switch 转换为 if else

SQL语句update ... ... from ......

swift swift中的基本switch语句

在swift中使用switch语句的布尔函数[重复]

下划线符号是不是会忽略或检查 Swift 中 switch 语句中的无效性?

Swift 中 didSelectRowAt 函数上的 Switch 语句