首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >扩展UIViewPropertyAnimator?

扩展UIViewPropertyAnimator?
EN

Stack Overflow用户
提问于 2017-10-25 06:45:32
回答 3查看 1.1K关注 0票数 14

UIViewPropertyAnimator对于修改视图的变换、alpha等非常方便。但是,有时您希望为CAShapeLayer路径或更改的UIImageView图像设置动画。有没有办法扩展UIViewPropertyAnimator的功能以支持其他属性?如果没有,我如何将单独的动画与复杂的关键帧动画同步?

EN

回答 3

Stack Overflow用户

发布于 2018-11-10 23:50:37

我想添加一个对这个主题的引用。如果您需要自定义属性。如果你完全理解发生了什么,这个问题会对你有所帮助。How can I animate a UIColor in a CALayer?

如果你弄清楚了,你就可以实现

fractionComplete: CGFloat非常简单。

但首先,你必须了解动画/动作/代理是如何进行的。所有的答案都在那里,但理解起来需要时间。

处理所有的情况是一件很长的事情。正如你所说,这是非常方便的,但留给勤奋的人。

票数 2
EN

Stack Overflow用户

发布于 2018-11-10 21:02:19

UIViewPropertyAnimator很容易使用。然而,这种简单性伴随着严重的限制。根据documentation,它只能直接用于动画的视图。这不包括CAShapeLayer的属性。

那么,你可以使用UIViewPropertyAnimator来制作什么动画呢?此列表中的所有内容:

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

如果要为CAShapeLayer设置动画,则必须改用CoreAnimation。虽然使用起来比较复杂,但幸运的是,它还允许您组合动画。

例如,如果要同时运行两个动画,可以使用如下所示的CAAnimationGroup

代码语言:javascript
复制
let fadeOut = CABasicAnimation(keyPath: "opacity")
fadeOut.fromValue = 1
fadeOut.toValue = 0
fadeOut.duration = 1

let expandScale = CABasicAnimation()
expandScale.keyPath = "transform"
expandScale.valueFunction = CAValueFunction(name: kCAValueFunctionScale)
expandScale.fromValue = [1, 1, 1]
expandScale.toValue = [3, 3, 3]

let fadeAndScale = CAAnimationGroup()
fadeAndScale.animations = [fadeOut, expandScale]
fadeAndScale.duration = 1

您还可以检测一个动画何时结束,并使用它来启动另一个动画。有两种方法可以完成此操作:

实施CAAnimationDelegate

可以设置动画的内容列表比UIViewPropertyAnimator的要长得多。你可以在here上找到它。

票数 1
EN

Stack Overflow用户

发布于 2018-11-16 07:41:08

如果你愿意,你可以扩展任何类,但是你所要求的能力并不容易达到那么多。因为CALayer不是UIView,所以UIViewAnimation...也不适用于它们(附注:苹果最近添加了对cornerRadius和其他一些层属性的某种支持,但不是全部)。

动画内容需要你了解更多的动画逻辑,比如帧、关键帧和时间线等等。一旦你学到了这些,你就可以自己制作复杂的关键帧动画了。

-小贴士:石英

有一些工具可以通过他们的图形用户界面让动画变得更容易,比如QuartzCode。当超级复杂的动画像这样出现时,我个人会使用它:

但不适用于像这样的简单关键帧动画:

希望能有所帮助。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46921150

复制
相关文章

相似问题

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