2014-02-07 38 views
3

通過添加帶有阻力的UIDynamicItemBehavior,我可以很容易地使對齊的速度更慢。但是,阻力的默認值是0.0,這對我來說仍然太慢。將阻力設置爲負值不起作用,看起來移動速度爲0.0。如何加速UISnapBehavior?

如何使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]; 
+0

哪裏了「啪」項目啓動?通過增加開始和目的地之間的距離,您將提高速度 – KIDdAe

+0

感謝@KIDdAe,這是一個好主意,這次可能適用於我的用例,但它仍然能夠加快捕捉速度本身,也許通過指定持續時間? – Hunkpapa

回答

5

也可以使用一個UIAttachmentBehavior實現儘可能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; 

通過以上1.0增加frequency到值將使其更快。通過將frequency減小到0.01.0之間的值,會使其變慢(或通過將大於1.0resistance值添加到您的UIDynamicItemBehavior)。


如果你發現在這一點最終位置振盪使用時,該frequency值,添加到該項目一定的阻力,太:

UIDynamicItemBehavior *resistance = [[UIDynamicItemBehavior alloc] initWithItems:@[viewToAnimate]]; 
resistance.resistance = 100.0; 
[self.animator addBehavior:resistance]; 
+1

謝謝你。有什麼辦法可以阻止物品在到達定位點後襬動?快照將對該點生成動畫,然後停止。這看起來似乎具有生命力,但從未停止振盪。 – Fogmeister

+0

@Fogmeister你可以添加一些大的阻力物品,這將消除振盪。 – Rob