使用 UIDynamicAnimator 水平动画 UIView
Posted
技术标签:
【中文标题】使用 UIDynamicAnimator 水平动画 UIView【英文标题】:Animate UIView horizontally using UIDynamicAnimator 【发布时间】:2014-04-17 05:36:45 【问题描述】:我已经浏览了文档,我很尴尬地说我很困惑。
情景:
我有一个UIView
,它的作用类似于 3 个UIButtons
的容器。这个容器最初的边界是0, 0, 35, 35
,里面的每个按钮都有相同的坐标(alpha
0)。在用户执行特定操作时,容器将边界更改为0, 0, 100, 35
,并且按钮分别动画到 x-origin 5、35 和 65,alpha
1,以便它们在调整大小的内部展开容器。我将此称为容器的扩展状态。用户执行相同的操作,将其切换回原始合同状态。
目标:
我目前正在使用[UIView animateWithDuration:]
块执行此操作,但想使用UIDynamicAnimator
添加有弹性的效果,这样,当切换到展开状态时,容器会通过弹跳调整大小(调整大小有点额外, 并弹回目标边界),按钮也会弹跳(再移动一点,然后弹回目标边界)。
混乱:
UIDynamicAnimator
,UIDynamicBehavior
,UIAttachmentBehavior
,UIDynamicItem
.....这一切都让我对UIKitDynamic
的理解溢出了。我想我应该使用 UISnapBehavior
,但我不知道该怎么做。
【问题讨论】:
【参考方案1】:事实证明,不需要使用UIDynamicAnimator
和所有其他动态 动画。我所需要的只是animateWithDuration:delay:usingSpringWithDamping: initialSpringVelocity: options: animations: completion:
类方法。只需使用它代替任何简单的 animateWithDuration:
方法,它就会产生我想要实现的确切行为。
示例代码:
[UIView animateWithDuration:0.4
delay:0
usingSpringWithDamping:0.5
initialSpringVelocity:0.5
options:0
animations:^
//Animation code
completion:nil];
【讨论】:
以上是关于使用 UIDynamicAnimator 水平动画 UIView的主要内容,如果未能解决你的问题,请参考以下文章
将 CGAffineTransformScale 与 UIAttachmentBehavior (UIDynamicAnimator) 一起使用