2011-12-06 9 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 Rect内にタッチポイントがあると見なしますが、そうではありません。 UIImageViewは回転して拡大縮小しますが、CGRectは元のままです。

誰もがこれに対処する方法を知っていますか?私はグラフィックのものにはかなり新しいです。何かが助けになるでしょう。ありがとう!

答えて

2

この

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

が、私は自分の質問に答えてみてください。

私はタッチイベントをカスタムImageViewクラス内に移動し、親UIViewを参照しました。

これで問題は解決しました。

ヒントのためのAnkitありがとうございます!

関連する問題