UIButtons 动画

Posted

技术标签:

【中文标题】UIButtons 动画【英文标题】:UIButtons Animation 【发布时间】:2015-01-09 17:19:02 【问题描述】:

我有两个 UIButton,用户可以选择其中一个,所以当一个被选中时,另一个被取消选中。我想像这样动画这个变化:

我知道我需要使用 Core Graphics,但我该如何实现呢?

感谢您的帮助

【问题讨论】:

您的问题有什么问题?您是否能够像上面那四张图片那样绘制这些按钮,但不能为运动设置动画?你能画出两种状态(选中和取消选中)但不能画中途选中吗?你一开始就不能画按钮吗? 我想我可以在静态状态下绘制按钮。我的问题是 1)我不知道如何在选择按钮时更改 CoreGraphic 2)我不知道如何执行动画 【参考方案1】:

您想在悬停圆图形上使用线性插值。 它的工作方式是这样的:

Final Position = [(Destination Position) * Time/TotalTimeForMovement] + [(Origin Position) * (1-Time/TotalTimeForMovement)]

假设当用户将鼠标从 Layer1 移动到 Layer2 时,您希望在 0.2 秒内将白色悬停图形从 Layer1 移动到 Layer2。在这种情况下,您需要每帧更新图形位置,其中:

最终位置 = [(Layer2 位置) * CurrentTimePassed/0.2] + [(Layer1 位置) * 1-(CurrentTimePassed/0.2)]

所以继续这个例子:假设Layer1的位置是(0, 0),Layer2的位置是(10, 0)。然后,移动0.1秒(假设0.2秒内完全移动),图形的位置应该是:

= (0, 10) * 0.1/0.2 + (0, 0) * 1-(0.1/0.2)
= (0, 10) * 0.5 + (0, 0) * 1-0.5
= (0, 10) * 0.5 + (0, 0) * 0.5
= (0, 5) + (0, 0)
= (0, 5)

位于 Layer1 和 Layer2 之间。希望对您有所帮助。

【讨论】:

感谢您的回答,但我的问题是关于核心图形部分,我知道如何用文本遮盖图像,但我不知道如何为它制作动画 我希望您永远不要自己编写该代码。 ios 上有两个 出色的 动画框架,它们具有两个不同的抽象级别,可以为您做到这一点。

以上是关于UIButtons 动画的主要内容,如果未能解决你的问题,请参考以下文章

UIButtons之间的滑动动画

UIButtons 在动画期间没有响应 - iOS Swift 3

UIButtons 不动

tvOS - UIButton 在聚焦时没有动画

UITableViewCell 内的 UIButton 默认点击动画

UIView动画中的UIButton字体大小问题