更新UISnapBehavior Point

时间:2014-07-01 22:33:49

标签: ios objective-c uikit uikit-dynamics

在我的应用中,我可以通过拖动来移动小视图。当用户开始拖动其中一个小视图时,它会保持原位,但会“拉伸”一定距离(~200点)。超过距离后,小视图应对用户的手指执行“捕捉”效果。整个动画最好被描述为橡皮筋破碎。

到目前为止,我已经实现了类似的快照效果:

UISnapBehavior *snapBehavior = [[UISnapBehavior alloc] initWithItem:iconView snapToPoint:[[touches anyObject] locationInView:self.view]];
[self.snapAnimator addBehavior:snapBehavior];

问题是,如果用户在执行捕捉动画时继续移动他们的手指,视图将继续朝着效果开始时手指的位置移动。

移动触摸时有没有办法更新UISnapBehavior的目的地?

2 个答案:

答案 0 :(得分:1)

不,没有。快照行为非常简单:它恰好赶上了你告诉它的那一点。就是这样。一种行为,一个点,一个项目,一个快照。

因此,您需要删除捕捉行为并用不同的点替换不同的捕捉行为。或者使用一种不同的行为,一种是可以在用户的手指移动时移动目标点的行为(例如UIAttachmentBehavior)。

答案 1 :(得分:0)

在iOS 9及更高版本中,您可以。现在有:

@property (nonatomic, assign) CGPoint snapPoint NS_AVAILABLE_IOS(9_0);

它按预期工作。