在我的应用程序中,我有一些小视图,可以通过拖动它们来移动。当用户开始在其中一个小视图上拖动时,它会留在原地,但会“拉伸”一定的距离(约200点)。在超过距离后,小视图应该对用户的手指执行“捕捉”效果。整个动画最好的描述是橡皮筋断裂。
到目前为止,我已经实现了快照效果,如下所示:
UISnapBehavior *snapBehavior = [[UISnapBehavior alloc] initWithItem:iconView snapToPoint:[[touches anyObject] locationInView:self.view]];
[self.snapAnimator addBehavior:snapBehavior];问题是,如果用户在执行快照动画时继续移动手指,视图将继续向开始效果时手指所在的位置移动。
当触摸被移动时,有没有办法更新UISnapBehavior的目标?
发布于 2014-07-02 06:50:03
不,没有。捕捉行为非常简单:它只会捕捉到你告诉它的点,就在那时。这就是它所做的一切。一个行为,一个点,一个项目,一个捕捉。
因此,您需要删除捕捉行为,并用不同的点替换不同的捕捉行为。或者使用一种不同的行为,可以在用户手指移动时移动目标点(例如UIAttachmentBehavior)。
发布于 2016-09-29 17:27:28
在iOS 9和更高版本中,您可以这样做。现在有:
@property (nonatomic, assign) CGPoint snapPoint NS_AVAILABLE_IOS(9_0);它的工作方式与预期一致。
https://stackoverflow.com/questions/24520238
复制相似问题