我想模仿“旺旺”的iPhone应用程序背景,有3种颜色,我希望视图循环,让我们说红色,蓝色和绿色 .
我希望有一个红色到蓝色到绿色的渐变,每个屏幕的1/3,相互褪色(渐变),然后,我希望红色从屏幕顶部移开并返回到底部 . (见下面的照片......)
动画应该向上移动,我希望渐变上升并在屏幕底部进行改造并上升 .
我尝试使用CAGradientLayer并设置“colors”属性的动画,但这看起来就像所有内容相互淡化,不一定会移出屏幕 .
考虑使用OpenGL,但不希望那些看似非常简单的东西 . 任何帮助/代码示例将非常感谢 . 我基本上需要使用CoreAnimation / CoreGraphics来帮助设置渐变动画 .
提前致谢!
2 回答
正如您所发现的那样,动画CAGradientLayer的
colors
属性只会导致淡入淡出 . 但是我觉得渐变层是要走的路 . 您应该查看以下选项:动画
positions
属性以及/而不是colors
.创建一个更大的渐变图层,其中包含完整的动画周期并为其位置设置动画
第二个选项可能会提供最佳性能,因为不需要重新计算渐变 .
您应该将UIView子类化以创建GradientView类 . 添加一个数组来保存您正在移动的颜色 . 选择很重要,我在解释原因 . 覆盖drawRect(rect:CGRect)方法并在颜色的组件之间进行插值:
索引变量从0开始并包围colors数组,而factor在0.0和1.0之间,并通过计时器动画: