自定义动画:缓出
Posted
技术标签:
【中文标题】自定义动画:缓出【英文标题】:Custom animation: easing out 【发布时间】:2018-07-04 16:31:55 【问题描述】:我已经成功地在 UIView
中的绘图中创建了自定义动画,方法是使用重复的 Timer
每隔几毫秒增加绘图的 alpha。
现在,我想用我的绘图实现缓动动画(减速)。我想通过在每次调用 Timer
时触发一个间隔更长的新计时器来做到这一点,这样 alpha 的增量就会变慢,从而导致减速。
我知道CAMediaTiming
有一个 easeOut 动画,但我想知道是否有任何内置函数来获取减速数字。例如,如果我传入一个常数 10,则每次调用该函数时,我都会得到 15、18、20、21、21.5 等减速数字。
【问题讨论】:
Swift 和 Cocoa Touch 有内置的动画方法。您根本不需要使用计时器。我会尽快发布答案。同时,你能分享你尝试过的代码吗? 【参考方案1】:在标准UIView
动画中有一种内置方式可以使用各种动画曲线。
var yourView = UIView() // Or whatever your view might be
var yourView.alpha = 0 // Initial alpha value
// Call the animation method. Note options (which can be an array) which applies an ease-out curve to the animation
UIView.animate(withDuration: 1.0, delay: 0.0, options: .curveEaseOut, animations:
yourView.alpha = 1.0 // Final value of alpha
, completion: nil)
其他动画曲线可用,例如.curveEaseIn
和.curveEaseInOut
以及其他选项。您可以阅读有关动画选项的更多信息here。
您也可以使用完成处理程序闭包来链接动画。
如果您坚持使用计时器实现自己的动画方式(我不推荐),请发布一些代码,以便我可以考虑将曲线应用于变化值的方法。
【讨论】:
以上是关于自定义动画:缓出的主要内容,如果未能解决你的问题,请参考以下文章
Android自定义View和属性动画完美结合,创造出酷炫圆环动画,带标尺和进度
Android自定义View实战之仿百度加载动画,一种优雅的Loading方式
如何使用 Core Animation 创建自定义缓动功能?