禁用UISnapBehavior上的旋转?

Ger*_*eri 9 animation uikit ios7 uikit-dynamics

我喜欢那个UISnapBehavior片段,但是我真的想用它来向一个方向滑动,只是稍微摆动一下.

有没有办法关闭这种行为的旋转? 因为SpriteKitallowsRotation可以轻易关闭的财产.

Alf*_*sen 27

您可以通过添加一个做到这一点UIDynamicItemBehavior给你UIDynamicAnimator,然后设置其allowsRotation属性NO,如下所示:

UIDynamicItemBehavior * dynamicItem = [[UIDynamicItemBehavior alloc] initWithItems:@[self.viewToSnap]];
dynamicItem.allowsRotation = NO;
[self.animator addBehavior:dynamicItem];
Run Code Online (Sandbox Code Playgroud)


Ger*_*eri 10

不需要UIKitDynamics这个.

只需简单地使用:

[UIView animateWithDuration:0.5
                          delay:0.0
         usingSpringWithDamping:0.65
          initialSpringVelocity:0.5
                        options:0
                     animations:^
    {
        self.transform = (self.expanded) ? self.openedTransition : self.closedTransition;
    }
                      completion:nil];
Run Code Online (Sandbox Code Playgroud)


Dan*_*nor 10

这是一个更好的答案:UISnapBehavior有一个action属性,它接受一个在每一步都被调用的块.像这样设置这个块......

snapBehavior.action = ^{ view.transform = CGAffineTransformIdentity; };
Run Code Online (Sandbox Code Playgroud)

...使旋转变为无效,没有任何其他副作用.