如果我正確地理解了這個問題,你想獲取一個與圖層座標系相關的點,並將其轉換爲圖像視圖的座標系?
在這種情況下,有幾個方法可以做到這一點。
最簡單的方法是使用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