我有两个图像一个网球和一个红色标记图像。我需要将网球作为背景,将红色标记作为前景,就像网球上的一层一样,我需要根据网球的形状调整红色标记。我必须通过捏和触摸动作来实现这一点。
下面是两张图。
图 1:
图 2(层):
最终图像通过调整圆圈:
这方面的任何初学者都会很好!
我有两个图像一个网球和一个红色标记图像。我需要将网球作为背景,将红色标记作为前景,就像网球上的一层一样,我需要根据网球的形状调整红色标记。我必须通过捏和触摸动作来实现这一点。
下面是两张图。
图 1:
图 2(层):
最终图像通过调整圆圈:
这方面的任何初学者都会很好!
有两种方法可以做到这一点(处理用户触摸):
touchesBegan:withEvent:
,touchesMoved:withEvent:
和touchesEnded:withEvent:
方法。参考在这里:UIResponder - 响应触摸事件。
如果您只需要移动红色圆圈,而不是调整它的大小 - 使用touches...
方法对您有好处。
但是,如果您想通过使用捏合手势调整圆圈的大小 - 您可能需要创建自定义手势识别器(并touches...
在那里实现相同的方法)来处理触摸和移动;并使用标准UIPinchGestureRecognizer来处理捏合手势。
您需要创建自定义手势识别器,因为标准的 UITapGestureRecognizer和UIPanGestureRecognizer有一些问题,正如这里提到的。
升级版:
例如,您有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
。