0

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

到目前为止,我已经像这样实现了快照效果:

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

问题是,如果用户在执行快照动画时继续移动他们的手指,则视图会继续移动到效果开始时手指所在的位置。

移动触摸时有什么方法可以更新 UISnapBehavior 的目的地吗?

4

2 回答 2

1

不,没有。捕捉行为非常简单:它只是捕捉到你告诉它的点,就在那时。这就是它所做的一切。一个行为,一个点,一个项目,一个快照。

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

于 2014-07-01T22:50:03.380 回答
0

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

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

它按预期工作。

于 2016-09-29T09:27:28.177 回答