使用UIButton子类中的CABasicAnimation为CALayer的borderColor设置动画

时间:2015-05-05 23:50:56

标签: ios uibutton cabasicanimation

我创建了UIButton的子类,以便我可以获得可重复使用的自定义外观,包括指定按钮图层的边角。这很有效。我现在想添加简单的动画来指示按钮的突出显示状态。我需要设置从一种边框颜色到另一种边框颜色的过渡动画,当用户触摸按钮时会发生这种过渡,然后当它们释放时,它需要动画回原始边框颜色。

所需行为:未突出显示时,按钮的边框开始为红色。当用户触摸并按住按钮时,它将变为突出显示状态,从而使边框颜色动画为蓝色。然后用户将他们的手指滑出按钮的边界以使突出显示的状态改变(不突出),导致动画发生并将边框颜色恢复为红色。如果用户将手指滑回边界,则该按钮将突出显示,从而使边框动画为蓝色。

在尝试获取该行为时,我实现了setHighlighted,其中我基于新的CABasicAnimation布尔值执行highlighted。当您点击并按住按钮时,这会起作用 - 边框颜色过渡动画。问题是它没有按钮释放动画。如果我将手指从按钮上滑下,边框颜色会立即恢复为红色。我预计它会从蓝色变成红色。就好像我没有为未突出的状态指定任何动画。此外,如果您点击并按住按钮,然后在按钮的框架内滑动手指,动画立即完成 - 它立即跳转到蓝色。我可以按照预期让动画超过2秒的唯一方法是按住按钮而不移动(在模拟器中很容易,在真实设备上很难)。它应该总是很好地在状态之间动画,永远不会立即跳跃颜色变化。

我的问题是:我如何为按钮子类中的按钮CALayer的{​​{1}}设置动画,以便转换为突出显示/未突出显示的状态?

borderColor

0 个答案:

没有答案