Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to test if a point is in a view

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?

like image 304
Blane Townsend Avatar asked Jun 28 '11 02:06

Blane Townsend


4 Answers

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
}
like image 135
Deepak Danduprolu Avatar answered Nov 13 '22 11:11

Deepak Danduprolu


Tested in Swift 4

view.frame.contains(point)
like image 44
Den Avatar answered Nov 13 '22 13:11

Den


if(CGRectContainsPoint([myView frame], point))

where point is your CGPoint and myView is your UIImageView

like image 33
Kal Avatar answered Nov 13 '22 12:11

Kal


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....
}
like image 2
Mac Avatar answered Nov 13 '22 12:11

Mac