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?
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
}
Testé dans Swift 4
view.frame.contains(point)
if(CGRectContainsPoint([myView frame], point))
où point est votre CGPoint et myView est votre UIImageView
Dans Swift 3
let isPointInFrame = UIScreen.main.bounds.contains(newLocation)
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....
}