web-dev-qa-db-fra.com

Comment tester si un point est dans une vue

J'ai une UIImageView et j'ai une CGPoint à l'écran. Je veux pouvoir tester ce point pour voir s'il est dans la UIImageView. Quelle serait la meilleure façon de faire cela?

22
Blane Townsend

CGPoint n'est pas bon avec un point de référence. Si votre point est dans les coordonnées de la fenêtre, vous pouvez l’obtenir en utilisant

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

Vous pouvez également appeler pointInside:withEvent: method

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

Testé dans Swift 4

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

où point est votre CGPoint et myView est votre UIImageView

2
Kal

Dans Swift 3

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

Je suppose que vous avez une fenêtre plein écran (assez raisonnable, je pense). Ensuite, vous pouvez transformer le point de l'espace de coordonnées de la fenêtre en UIImageView en utilisant:

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

Ensuite, vous pouvez tester si le point se trouve dans le cadre de la vue d'image comme suit:

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