使用UIDynamicAnimator水平动画UIView

时间:2014-04-17 05:36:46

标签: ios uiview uikit-dynamics uidynamicanimator

我已经阅读了文档,我很尴尬地说我很困惑。

情景

我有一个UIView,就像3 UIButtons的容器一样。这个容器最初是边界{0, 0, 35, 35},每个按钮里面都有相同的坐标(alpha 0)。在用户的特定操作上,容器将边界更改为{0, 0, 100, 35},并且按钮分别动画为x-origin 5,35和65,alpha 1,以便它们被传播在调整大小的容器内。我将此称为容器的展开状态。用户执行相同操作,将其切换回原始合同规定状态

目标

我目前正在使用[UIView animateWithDuration:]块执行此操作,但希望使用UIDynamicAnimator添加弹性效果,这样,当切换到展开状态时,容器会通过反弹调整大小(调整一点额外的大小,并反弹回目标边界),按钮也会反弹(进一步移动,然后反弹回目标边界)。

困惑

UIDynamicAnimatorUIDynamicBehaviorUIAttachmentBehaviorUIDynamicItem .....所有这些都导致我对UIKitDynamic的理解溢出。我想我应该使用 UISnapBehavior ,但我不知道如何去做。

1 个答案:

答案 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];