使用UIDynamicAnimator水平动画UIView

n00*_*mer 2 uiview ios uikit-dynamics uidynamicanimator

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

场景:

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

目标:

我目前正在使用[UIView animateWithDuration:]块进行此操作,但是想使用它UIDynamicAnimator来添加弹性效果,这样,当切换到展开状态时,容器会通过反弹调整大小(稍微调整大小,然后弹回到目标边界),按钮也会弹跳(向前移动一点,然后弹回到目标边界).

困惑:

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

n00*_*mer 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];
Run Code Online (Sandbox Code Playgroud)