首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >CABasicAnimation在整个时间线上将一个位置动画化(搜索)

CABasicAnimation在整个时间线上将一个位置动画化(搜索)
EN

Stack Overflow用户
提问于 2015-03-31 15:50:32
回答 2查看 871关注 0票数 4

我想知道CoreAnimation是否可以实现以下内容。

就像标题上说的,如果你愿意的话,我想要动画或者寻找,在整个时间轴动画中的一个位置。

例如,我创建了一个CABasicAnimation,它在10秒的整个时间线上将CALayer的颜色从蓝色变为红色,并使用EaseOut的简化功能。

与其从头到尾播放动画,我更喜欢更精细的控制。

例如,我想说animateTo(占整个动画的50%)。这将导致动画从0%开始,并以轻松的功能将整个动画的50%动画化。所以动画将持续5秒,我们将处于颜色转换的中间。

在此之后我可以说,animateTo(20%)。这将导致动画从我们目前的50%的位置开始,并反向动画到20%的全部动画。因此,我们最终会得到一个3秒的动画,我们将20%的颜色从蓝色转换成红色。

最后,我们只是在整个时间线上的一个位置动画。我可以轻松地说animateTo(5秒)而不是animateTo(50%)。或者animateTo(2秒)而不是animateTo(20%)。

我已经在CoreAnimation上读到了,看来我无法得到这样的控制。还有人用CoreAnimation试过这个吗?

谢谢!

EN

回答 2

Stack Overflow用户

发布于 2016-08-08 13:25:50

最新的SDK为UIKit动画添加了一点内容。可能适合你的需要..。

根据文件:

新的基于对象的、完全交互式的和可中断的动画支持,允许您保留对动画的控制,并将它们与基于手势的交互联系起来。

新的闪亮的UIViewPropertyAnimator

代码语言:javascript
运行
复制
let animator = UIViewPropertyAnimator(duration: 3.0, curve: .easeInOut) {
    self.myView.alpha = 0
}
animator.startAnimation()

animator.pauseAnimation()
animator.isReversed = true
animator.fractionComplete = 1.5 / CGFloat(animator.duration)

然而,也有一些限制: PropertyAnimator需要针对iOS 10 (在撰写本文时仍处于测试版)。此外,动画仅限于UIView 动画属性,它们是:

  • frame
  • bounds
  • center
  • transform
  • alpha
  • backgroundColor
  • contentStretch

如果您希望获得更多的灵活性和特性,请查看一些开放源码库,如TRX预付款

代码语言:javascript
运行
复制
import TRX

let tween = Tween(from: 0, to: 1, time:3, ease:Ease.Quad.easeOut) {
    anyObject.anyProperty = $0
}
let reversed = tween.reversed()
reversed.seek(1.5)
reversed.start()
票数 1
EN

Stack Overflow用户

发布于 2015-03-31 17:56:02

正如已经指出的,没有内置的功能.但是如果您想要创建自己的解决方案,这里有一些已经存在的注释和有用的函数。

CABasicAnimation符合“`CAMediaTiming”协议,并包含一些用于用例的简洁功能:

  • timeOffset -这个值决定了你实际想要在什么时间进入动画,如果你的动画持续时间是2秒,而timeOffset设置为1,它将导致动画从中间开始。
  • speed -将该值设置为-1将导致动画反转(例如,在50%到20%的情况下)
  • duration -如果您想要更改动画的持续时间以进行更短的更改,例如从40%更改到50%,则可能会更改。
  • timingFunction --我希望这里可以提供一个定制的计时函数,例如,即使持续时间设置为5秒,它也可以在1秒后完成动画,这意味着:在0到1之间的线性函数,在那个常数之后。然而,也有可能通过bezierPath实现这一近似。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29372911

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档