gpt4 book ai didi

iphone - 部分拖动 UIView,然后它自行移动

转载 作者:行者123 更新时间:2023-12-03 19:09:11 25 4
gpt4 key购买 nike

我有一个应用程序,其底部有一个可拖动的 UIView。可拖动 View 并不完全离开屏幕,它有一个“拉动选项卡”,用户可以向上或向下拖动。目前可以上下拖动,但我想让它具有与 Apple 通知滑出抽屉相同的行为。

例如,如果我将 View 向上拖动 50% 并将手指从屏幕上移开,那么我希望可拖动 View 继续自行向上移动。同样,如果用户仅将 View 拖出(例如向上 30%),则 View 应回落到其默认位置。

理想情况下,虽然我可以向上/向下拖动,但 Action 不是很“自然”......

现在,我正在通过 UIPanGestureRecognizer 完成向上和向下拖动,以防万一这与问题相关。

这是否可能类似于可拖动 View 的 Y 位置的一些巧妙的数学运算,然后使用一些 CAAnimations 完成其余的移动?

这可能有点难以想象,所以我在下面添加了一些屏幕。

Default screen with the a view at the bottom

The view dragged up via the tab on the right

谢谢!

最佳答案

当您的 UIPanGestureRecognizer 的状态变为 UIGestureRecognizerStateEnded 时,使用 velocityInView: 消息查找手势的速度。

如果速度接近于零,则根据 View 的位置和 View 的先前状态打开或关闭 View 。例如,如果 View 已关闭并且已拉出超过 10%,则将其打开。如果它是打开的并且已拉入超过 10%,请将其关闭。否则,将其移回到手势前的位置。

如果速度不接近于零,则使用 Y 分量的符号来确定 View 的新状态。如果符号为正,则关闭 View 。如果符号为负,则打开 View 。

您必须进行实验才能弄清楚“接近于零”的确切定义是什么感觉最好。

无论如何,您都希望在手势结束后使用较短的持续时间(可能在 0.1 到 0.25 秒之间)将 View 动画到其最终位置。您可能需要根据 View 需要行进的速度和距离来选择持续时间。系统通知面板可以执行此操作。 (尝试缓慢向下拖动它或快速向下拖动它。它会以不同的速度动画到最终位置,具体取决于您松开时拖动它的速度。)

您将需要尝试找到最佳动画曲线(UIViewAnimationOptionCurveEaseOut 等),并且您可能希望根据是打开还是关闭 View 以及手势的速度。

关于iphone - 部分拖动 UIView,然后它自行移动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9308246/

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