web-dev-qa-db-ja.com

ポイントがビュー内にあるかどうかをテストする方法

画面にUIImageViewCGPointがあります。そのポイントをテストして、それがUIImageViewにあるかどうかを確認できるようにしたいと思います。これを行うための最良の方法は何でしょうか?

24
Blane Townsend

CGPointは、参照点では適切ではありません。ポイントがウィンドウの座標にある場合は、を使用して取得できます

CGPoint locationInView = [imageView convertPoint:point fromView:imageView.window];
if ( CGRectContainsPoint(imageView.bounds, locationInView) ) {
    // Point lies inside the bounds.
}

pointInside:withEvent: メソッド

if ( [imageView pointInside:locationInView withEvent:nil] ) {
    // Point lies inside the bounds
}
49

Swift 4でテスト済み

view.frame.contains(point)
7
Den
if(CGRectContainsPoint([myView frame], point))

ここで、pointはCGPointであり、myViewはUIImageViewです。

2
Kal

フルスクリーンウィンドウがあると仮定します(かなり合理的だと思います)。次に、以下を使用して、ポイントをウィンドウの座標空間からUIImageViewに変換できます。

CGPoint point = ...
UIWindow window = ...
UIImageView imageView = ...
CGPoint transformedPoint = [window convertPoint:point toView:imageView];

次に、次のようにして、ポイントが画像ビューのフレーム内にあるかどうかをテストできます。

if(CGRectContainsPoint(imageView.frame, transformedPoint))
{
    // do something interesting....
}
2
Mac

In Swift

let isPointInFrame = UIScreen.main.bounds.contains(newLocation)
1
Darshit Shah