Swift - 通过 switch 语句为 CAGradientLayer 设置动画
Swift - Animating CAGradientLayer via switch statement
我有一个通过 CAGradientLayer 生成的渐变背景。我还有一个 switch 语句,它根据 UI 的其他部分更新 gradientLayer 的颜色。它工作得很好,但是,渐变之间的 "fade" 非常非常快。我什至没有在 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 的持续时间?谢谢
你试过这样做吗?
CATransaction.setAnimationDuration(0.5)
您应该可以将它放在 switch 语句的正上方。
查看此答案以获得更多见解Change animation time for properties of a CALayer
我有一个通过 CAGradientLayer 生成的渐变背景。我还有一个 switch 语句,它根据 UI 的其他部分更新 gradientLayer 的颜色。它工作得很好,但是,渐变之间的 "fade" 非常非常快。我什至没有在 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 的持续时间?谢谢
你试过这样做吗?
CATransaction.setAnimationDuration(0.5)
您应该可以将它放在 switch 语句的正上方。
查看此答案以获得更多见解Change animation time for properties of a CALayer