How to test if a point is in a view
Asked Answered
R

5

29

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?

Roehm answered 28/6, 2011 at 2:58 Comment(0)
N
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
}
Nanji answered 28/6, 2011 at 3:6 Comment(0)
A
16

Tested in Swift 4

view.frame.contains(point)
Argos answered 24/3, 2018 at 22:57 Comment(0)
G
3

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....
}
Grandpapa answered 28/6, 2011 at 3:5 Comment(0)
P
2
if(CGRectContainsPoint([myView frame], point))

where point is your CGPoint and myView is your UIImageView

Pounds answered 28/6, 2011 at 3:2 Comment(0)
J
0

In Swift 3

let isPointInFrame = UIScreen.main.bounds.contains(newLocation)
Jupiter answered 3/5, 2017 at 11:37 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.