gpt4 book ai didi

iphone - 如何使拖动的 UIView 减速?

转载 作者:行者123 更新时间:2023-11-29 13:51:09 27 4
gpt4 key购买 nike

我有一个可以用手指拖动的 UIView,这是我使用 UIPanGestureRecognizer 实现的。这允许我水平拖动 View ;向左或向右。

我在从 UIPanGestureRecognizer 接收到以下状态(使用 translationInView: 方法)时让我的 View 移动:

  • UIGestureRecognizerStateBegan
  • UIGestureRecognizerStateChanged

目前发生的情况是,一旦手指离开屏幕表面, View 就会停止移动,这会呈现出一种不自然的效果。

我想要的是,拖动 View 从状态 UIGestureRecognizerStateEnded 开始平稳停止。

UIScrollView 类和子类(UIWebView、UITableView 等)使用了这种行为。

我已经尝试了几种方法,通过计算速度、触摸发生的时间和停止距离等。但老实说,我有一种无处可去的自然行为的感觉。我什至尝试使用像 Chipmunk 这样的物理引擎。但我发现这对于我试图实现的目标来说太复杂了,而且我很确定应该有更好(如果不是更简单)的解决方案。

非常感谢!

杰里米

最佳答案

在你的手势识别器中,当你的手指离开屏幕时,你开始一个动画继续滚动一点,持续时间很短,有一个“Ease Out”过渡。

也许是这样的:

[UIView beginAnimations:@"FingerOff" context:nil];
[UIView setAnimationDuration:0.25f];
[UIView setAnimationBeginsFromCurrentState:YES];
[UIView setAnimationDelegate:self];
[UIView setAnimationCurve:UIAnimationViewEaseOut];
[myView setFrame:newFrame];
[UIView commitAnimation];

您可以将 setFrame 替换为其他内容 - 无论您希望如何滚动或查看 - 甚至可以是 setCenter。使其滚动到比当前位置“更远”一点。

关于iphone - 如何使拖动的 UIView 减速?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4053533/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com