在两个 CAGradientLayer 颜色设置之间连续渐变?

Posted

技术标签:

【中文标题】在两个 CAGradientLayer 颜色设置之间连续渐变?【英文标题】:Fade continuously between two CAGradientLayer color set-ups? 【发布时间】:2011-05-27 18:59:44 【问题描述】:

我想让UIButton 产生脉冲,我计划通过在CAGradientLayer 上的两个颜色阵列之间慢慢淡化来实现这一点。有没有办法来回重复动画?

【问题讨论】:

【参考方案1】:

是的。在 Core Animation 中,您创建一个显式动画来执行淡入淡出,然后您还必须为动画对象设置另外两个属性:autoReversesrepeatCount(要执行的重复次数,每 2 次重复将带您完成动画并再次返回)。在您的情况下,您将在设置动画对象的代码中添加以下行(我将调用该对象 anim):

 anim.repeatCount = HUGE_VALF;
 anim.autoReverses = YES;

HUGE_VALF 会导致动画永远重复,尽管您可以指定一个大于任何可能发生的重复次数的数字。

这些属性没有显示在 CAAnimation 对象或其子类的文档中,因为它是在 CAAnimation 及其子类采用的 CAMediaTiming 协议中定义的。但是您可以在 Animation Types and Timing Programming GuideTiming, Timespaces, and CAAnimation 部分查看 CAMediaTiming 协议的示例和讨论,因为它适用于 CAAnimation 对象。 Apple 的开发者网站或通过 XCode 提供的文档中。

(许多人似乎发现 Apple 的 Core Animation 文档特别难以理解,除非您对不同的部分有一个很好的整体掌握。我基本上知道您必须做什么,但仍然很难记住确切的位置所涉及属性的实际信息。)

【讨论】:

以上是关于在两个 CAGradientLayer 颜色设置之间连续渐变?的主要内容,如果未能解决你的问题,请参考以下文章

如何更改 CAGradientLayer 色点?

iOS UITableView:使用 CAGradientLayer 将背景颜色分配为渐变

如何在 iOS 中使用 CAGradientLayer 在 UITableViewCell 中设置多个渐变颜色?

我可以通过 IBAction 更改 CAGradientLayer() 颜色吗?

在 CAGradientLayer 上方显示 SCNScene

如何为导航栏设置 CAGradientLayer 动画