I have a UIImageView
and I have a CGPoint
on the screen. I want to be able to test that point to see if it is in the UIImageView
. What would be the best way to do this?
Asked
Active
Viewed 2.8k times
29

Paulo Mattos
- 18,845
- 10
- 77
- 85

Blane Townsend
- 2,888
- 5
- 41
- 55
5 Answers
51
CGPoint
is no good with a reference point. If your point is in window's coordinates then you can get it using
CGPoint locationInView = [imageView convertPoint:point fromView:imageView.window];
if ( CGRectContainsPoint(imageView.bounds, locationInView) ) {
// Point lies inside the bounds.
}
You may also call pointInside:withEvent:
method
if ( [imageView pointInside:locationInView withEvent:nil] ) {
// Point lies inside the bounds
}

Paulo Mattos
- 18,845
- 10
- 77
- 85

Deepak Danduprolu
- 44,595
- 12
- 101
- 105
2
if(CGRectContainsPoint([myView frame], point))
where point is your CGPoint and myView is your UIImageView

Kal
- 24,724
- 7
- 65
- 65
2
I'll assume you have a full-screen window (pretty reasonable, I think). Then you can transform the point from the window's coordinate space to the UIImageView's using:
CGPoint point = ...
UIWindow window = ...
UIImageView imageView = ...
CGPoint transformedPoint = [window convertPoint:point toView:imageView];
Then, you can test if the point is in the image view's frame as follows:
if(CGRectContainsPoint(imageView.frame, transformedPoint))
{
// do something interesting....
}

Mac
- 14,615
- 9
- 62
- 80
0
In Swift 3
let isPointInFrame = UIScreen.main.bounds.contains(newLocation)

Darshit Shah
- 2,366
- 26
- 33