【问题标题】:How can I move around and slide away a UIView with touches and swipes?如何通过触摸和滑动移动并滑开 UIView?
【发布时间】:2009-07-16 15:06:39
【问题描述】:

我正在尝试为一种可拖动的 UIView 设置动画,其行为应该是这样的:

  • 随着用户的触摸在屏幕上拖动。
  • 检测滑动触摸并以初始速度和负加速度自动拖动,一段时间后停止。

就像在照片周围移动,然后通过它到屏幕的一侧。

对此有什么建议吗?

【问题讨论】:

    标签: objective-c iphone cocoa-touch animation uiview


    【解决方案1】:

    大约 3 周前(我)问了一个similar question。虽然我收到的一些答案有点离题,但最好的建议是: 1- 研究 Apple 的 MoveMe 示例,了解如何触摸对象并将其拖动。并且 2-您通过将 [touch locationInView:self.view] 与 touchesEnded 中的 [touch previousLocationInView:self.view] 进行比较来“抛出”对象 (也可以在 touchesBegan 中存储对第一次触摸的引用,但我发现用户可能会暂停,这不太有用)使用每个时间戳,您可以确定滑动(轻弹)的方向和速度并使用它们来发送你的小 UIView 飞来飞去。显然你想施加力(“摩擦”)或任何东西来减慢它,所以它不会飞到你的屏幕上......

    【讨论】:

    • 谢谢。我如何应用这些“摩擦”力?我应该使用不同时间的 CAKeyframeAnimation 吗?我如何生成这个时间?我有点迷失在动画世界中。
    • 更新链接:MoveMe
    【解决方案2】:

    我不确定。但也许你可以使用 UIScrollView 对象的减速属性。将您的 imageView 放入 UIScrollView 并使用此属性。它是一个 BOOL 变量,如果用户没有拖动内容但仍在滚动,则返回值为 YES。

    【讨论】:

    • 对不起,不是我要找的东西
    【解决方案3】:

    查看来自 Apple 的 MoveMe 示例项目(可能需要注册)。它演示了如何让标语牌跟随触摸以及根据不同的触摸变换自身。

    本质上,这个想法是你重写 UIResponder 触摸方法来分析设备接收到什么样的触摸,然后移动对象以跟随用户的手指或根据它是否是一个方向给它一个方向的速度缓慢拖动或滑动。然后,您可以使用 Core Animation 对对象框架的更改进行动画处理。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多