1

我有两个图像一个网球和一个红色标记图像。我需要将网球作为背景,将红色标记作为前景,就像网球上的一层一样,我需要根据网球的形状调整红色标记。我必须通过捏和触摸动作来实现这一点。

下面是两张图。

图 1:

在此处输入图像描述

图 2(层):

在此处输入图像描述

最终图像通过调整圆圈:

在此处输入图像描述

这方面的任何初学者都会很好!

4

1 回答 1

2

有两种方法可以做到这一点(处理用户触摸):

  1. touchesBegan:withEvent:,touchesMoved:withEvent:touchesEnded:withEvent:方法。参考在这里:UIResponder - 响应触摸事件

  2. 手势识别器(使用标准手势识别器或创建您自己的自定义手势识别器)。参考在这里:手势识别器。好的教程在这里

如果您只需要移动红色圆圈,而不是调整它的大小 - 使用touches...方法对您有好处。

但是,如果您想通过使用捏合手势调整圆圈的大小 - 您可能需要创建自定义手势识别器(并touches...在那里实现相同的方法)来处理触摸和移动;并使用标准UIPinchGestureRecognizer来处理捏合手势。

您需要创建自定义手势识别器,因为标准的 UITapGestureRecognizerUIPanGestureRecognizer有一些问题,正如这里提到的。

升级版:

例如,您有UIViewController. 您正在添加UIImageView到 viewController 的view. 并且您正在创建UIView具有清晰背景并在其中绘制红色圆圈,或者您正在添加另一个UIImageView带有红色圆圈的圆圈(如果您有它的图像)。让我们称之为redCircleView

您正在制作redCircleView透明(redCircleView.alpha = 0),或者您可以在用户触摸屏幕时对其进行初始化。我认为第二种选择更好,但我不确定。

在您UIViewController正在实施的touchesBegan:withEvent:方法中,您可以设置redCircleView.alpha = 1或初始化 this redCircleView

touchesMoved:withEvent:实现中,您可以使用在任何视图中获取触摸位置UITouch:locationInView:

 (void) touchesMoved: (NSSet *)touches withEvent:(UIEvent *)event {
      UITouch *touch = [touches anyObject];
      CGPoint point = [touch locationInView:self.view];
      .
      .
      .
 }

然后您可以更改redCircleView.center(然后红色圆圈的中心将跟随屏幕上的手指)或者您可以存储前一点的位置,将其与当前位置进行比较然后移动redCircleView

于 2013-03-18T10:11:42.077 回答