我已经阅读了文档,我很尴尬地说我很困惑。
情景:
我有一个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
,但我不知道如何去做。
答案 0 :(得分:8)
事实证明,不需要使用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];