如果我正确地理解了这个问题,你想获取一个与图层坐标系相关的点,并将其转换为图像视图的坐标系?
在这种情况下,有几个方法可以做到这一点。
最简单的方法是使用convertPoint:fromView:
或convertPoint:toView:
CGPoint imageViewTouchPoint = [layerView convertPoint:接触点fromView:ImageView的];
CGPoint imageViewTouchPoint = [ImageView的convertPoint:接触点toView:layerView];
无论是一个人应该工作。
编辑 - 我现在意识到,这是只有在UIImageView
具有相同的帧作为UIImage
,你说可能不会,由于UIViewContentModeScaleAspectFit
财产。
在这种情况下,除非我弄错了,否则图像帧将在UIImageView
drawRect:
方法内计算,而不是一个被设置的属性。这意味着你必须自己计算。
肯定会从上面的方法之一得到imageViewTouchPoint
(以防万一你想在不是全屏尺寸的UIImageView
上使用相同的逻辑)。
然后,您将需要计算缩放后的图像帧。有几种方法可以做到这一点。有些人会蛮力并根据图像的哪一边更长时间进行手动计算,然后确定哪一边应该缩放。然后他们通过对图像进行居中并减去图像和图像视图的两侧并除以二来计算原点。
我想如果这是不必要的编写尽可能少的代码越好,即使这意味着进口的框架。如果您导入AVFoundation
,您将得到一个方法AVMakeRectWithAspectRatioInsideRect
,您可以使用该方法实际计算一行代码中的缩放矩形。
CGRect imageRect = AVMakeRectWithAspectRatioInsideRect(image.size,imageView。帧);
哪种方法你使用,你会那么简单地缩放图像原点翻译你的触碰点:
CGPoint imageTouchPoint = CGPointMake(imageViewTouchPoint.x - imageRect.origin.x,imageViewTouchPoint.y - imageRect.origin.y);
“的观点后,这是一个很大的UIImageView,并且图像方面的配合。” - 什么? – 2013-07-28 06:24:50
什么是100,240?该图像是在你的性别(显然是全屏)图像视图。目前还不清楚你想要计算什么。 – Wain
对不起,更新了这个问题。 – DNB5brims