繁体   English   中英

通过触摸屏幕的任何部分将 UIImageView 从一个点移动到另一个点

[英]Moving a UIImageView from one point to another by touching any part of the screen

我一直在尝试从我在故事板中设置的原始位置获取一个UIImageView *rocket 它甚至对其初始位置有限制。

当触摸或按住屏幕时,我希望火箭向下移动 77 个像素。 释放后,它会回到原来的位置。

所有这些动作,我希望有一个 0.5 秒的动画,以免看到它跳跃。

我希望我在这里有足够的信息。

您想要的有两个部分:用户操作和 UI 动画。

听起来您想使用UILongPressGestureRecognizer 听起来您还希望在您的视图控制器中拥有整个视图,以响应长按。

要使UILongPressGestureRecognizer执行以下操作:

  1. 创建一个UILongPressGestureRecognizer并将其作为手势添加到视图控制器中的视图中。

  2. 创建一个方法,当发生某些事情时,长按手势可以调用该方法。 我通常称之为viewControllerLongPressed:类的东西。

  3. 将新方法作为目标添加到手势识别器中。

  4. moveRocketDownmoveRocketUp创建两个新方法。

  5. viewControllerLongPressed: ,检查发送者的状态。 如果是UIGestureRecognizerStateBegan然后调用moveRocketDown UIGestureRecognizerStateEndedmoveRocketUp做同样的moveRocketUp

此时,您有一个手势识别器,可以响应用户在视图中任何位置的触摸(除非有其他手势识别器干扰视图)。

现在,您只需要为火箭设置动画。

如果您确切地知道火箭每次开始动画和结束动画的位置,那么我建议为这两个点创建常量。 类似于 _rocketStartCenter 和 _rocketEndCenter。

要为火箭设置动画,此方法应该有效(我不在电脑前检查,所以如果它关闭,我深表歉意):

[UIView animateViewWithDuration:0.5f
                     animations:^{
                         _rocket.center = _rocketStartCenter;
                      }];

我建议使用大约 0.3-0.35 秒的动画,大多数 iOS 动画都在这个范围内。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM