3

通过添加具有阻力的 UIDynamicItemBehavior,我可以轻松地使捕捉变慢。但是,阻力的默认值是 0.0,这对我来说仍然太慢了。将阻力设置为负值没有效果,它的移动速度似乎快到 0.0。

如何使 UISnapBehavior 更快?

(这里是一个让捕捉变慢的例子):

UIDynamicItemBehavior *dynamicItemBehavior = [[UIDynamicItemBehavior alloc] initWithItems:@[button]];
dynamicItemBehavior.resistance = 50.0; // This makes the snapping SLOWER
UISnapBehavior *snapBehavior = [[UISnapBehavior alloc] initWithItem:button snapToPoint:point];
[self.animator addBehavior:button.dynamicItemBehavior];
[self.animator addBehavior:button.snapBehavior];
4

1 回答 1

5

您也可以使用 aUIAttachmentBehavior来实现与 类似的UISnapBehavior效果,并更好地控制速度。例如:

UIAttachmentBehavior *attachment = [[UIAttachmentBehavior alloc] initWithItem:viewToAnimate attachedToAnchor:viewToAnimate.center];
[self.animator addBehavior:attachment];
attachment.frequency = 20.0;
attachment.damping = 1.0;
attachment.anchorPoint = newPoint;

通过增加到frequency上述值1.0将使其更快。通过减少frequency到 和 之间的值0.01.0将使其变慢(或通过添加resistance大于1.0您的值UIDynamicItemBehavior)。


如果您在使用此frequency值时发现它在该最终位置振荡,请也为该项目添加一些阻力:

UIDynamicItemBehavior *resistance = [[UIDynamicItemBehavior alloc] initWithItems:@[viewToAnimate]];
resistance.resistance = 100.0;
[self.animator addBehavior:resistance];
于 2014-03-03T07:11:30.850 回答