在我的应用中,我可以通过拖动来移动小视图。当用户开始拖动其中一个小视图时,它会保持原位,但会“拉伸”一定距离(~200点)。超过距离后,小视图应对用户的手指执行“捕捉”效果。整个动画最好被描述为橡皮筋破碎。
到目前为止,我已经实现了类似的快照效果:
UISnapBehavior *snapBehavior = [[UISnapBehavior alloc] initWithItem:iconView snapToPoint:[[touches anyObject] locationInView:self.view]];
[self.snapAnimator addBehavior:snapBehavior];
问题是,如果用户在执行捕捉动画时继续移动他们的手指,视图将继续朝着效果开始时手指的位置移动。
移动触摸时有没有办法更新UISnapBehavior的目的地?
答案 0 :(得分:1)
不,没有。快照行为非常简单:它恰好赶上了你告诉它的那一点。就是这样。一种行为,一个点,一个项目,一个快照。
因此,您需要删除捕捉行为并用不同的点替换不同的捕捉行为。或者使用一种不同的行为,一种是可以在用户的手指移动时移动目标点的行为(例如UIAttachmentBehavior)。
答案 1 :(得分:0)
在iOS 9及更高版本中,您可以。现在有:
@property (nonatomic, assign) CGPoint snapPoint NS_AVAILABLE_IOS(9_0);
它按预期工作。