2011-12-06 47 views
0

我試圖檢查的CGRect:對UIImageView進行旋轉之後,我應該如何檢查觸點是否位於UIImageView區域內?

CGFloat imageX1 = imageView.frame.origin.x; 
CGFloat imageY1 = imageView.frame.origin.y; 
CGFloat imageX2 = imageView.frame.origin.x + imageView.frame.size.width; 
CGFloat imageY2 = imageView.frame.origin.y + imageView.frame.size.height; 

//NSLog(@"(%f, %f) - (%f, %f)", imageX1, imageY1, imageX2, imageY2); 
if(imageX1 < touchedX && touchedX < imageX2 && 
    imageY1 < touchedY && touchedY < imageY2){ } 

然後,我知道什麼時候的UIImageView未被旋轉/縮放,這種類型的檢查纔有效。

我試過CGRectApplyAffineTransform(imageView.frame, imageView.transform);,但它爲轉換後的UIImageView創建了一個最小的矩形。

所以說,你有一個UIImageView旋轉45度,並縮放到1.5。現在,當您觸摸UIImageView外部的幾個像素時,它仍然認爲觸摸點位於UIImageView矩形內,但事實並非如此。 UIImageView被旋轉和縮放,但CGRect仍然是原始的。

任何人都知道如何處理這個?我對圖形的東西很新。任何事情都會有幫助。謝謝!

回答

2

試試這個

CGPoint touchLocation = [touch locationInView:self]; 
if (CGRectContainsPoint(myImageView.frame, touchLocation)) 
0

我回答我的問題。

我移動了自定義ImageView類中的觸摸事件,並有父UIView的引用。

它解決了這個問題。

感謝Ankit的提示!