2013-03-16 68 views
1

我有两个图像,一个网球和一个红色标记图像。我需要将网球作为背景,并将红色标记作为前景,如网球上方的一层,我需要根据网球的形状调整红色标记。我必须通过捏和触摸操作来实现这一点。用圆形图像图层标记球 - 在iphone touch中缩放或移动

下面是两张图片。

图1:

图像2(层):

enter image description here

最终图像通过调整圆:

enter image description here

对此的任何首发将是好!

+0

所以你有图像上有球。当用户开始与此图像交互时,会出现红圈(图片2(图层))和用户,通过移动他的手指,调整红圈?或者你想红圈自动适应网球? – derpoliuk 2013-03-17 01:33:53

+0

@StasDerpoliuk我想让用户移动并调整红色的圆以适应球! – Manoj 2013-03-18 06:25:21

回答

2

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

  1. touchesBegan:withEvent:touchesMoved:withEvent:touchesEnded:withEvent:方法。参考在这里:UIResponder - Responding to Touch Events

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

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

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

您需要创建自定义手势识别器,因为标准UITapGestureRecognizerUIPanGestureRecognizer有一些问题,因为它提到了here

UPD:

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

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

在你UIViewController你实现touchesBegan:withEvent:方法,在那里你要么设置redCircleView.alpha = 1或初始化这个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

+0

如何在图片上制作图片?即球上的红色圆圈?只触摸并移动红圈而不是球? – Manoj 2013-03-19 04:32:48

+0

@Manoj我已更新我的答案 – derpoliuk 2013-03-19 09:04:46

+0

感谢您的回答!和更新太!!!] \ – Manoj 2013-03-20 03:46:06