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