Как проверить, находится ли точка в представлении - PullRequest
22 голосов
/ 28 июня 2011

У меня есть UIImageView, и у меня есть CGPoint на экране.Я хочу иметь возможность проверить эту точку, чтобы увидеть, находится ли она в UIImageView.Как лучше всего это сделать?

Ответы [ 5 ]

47 голосов
/ 28 июня 2011

CGPoint плохо с ориентиром. Если ваша точка находится в координатах окна, вы можете получить ее, используя

CGPoint locationInView = [imageView convertPoint:point fromView:imageView.window];
if ( CGRectContainsPoint(imageView.bounds, locationInView) ) {
    // Point lies inside the bounds.
}

Вы также можете позвонить pointInside:withEvent: метод

if ( [imageView pointInside:locationInView withEvent:nil] ) {
    // Point lies inside the bounds
}
5 голосов
/ 25 марта 2018

Проверено в Swift 4

view.frame.contains(point)
2 голосов
/ 28 июня 2011
if(CGRectContainsPoint([myView frame], point))

где точка - ваш CGPoint, а myView - ваш UIImageView

1 голос
/ 03 мая 2017

In Swift 3

let isPointInFrame = UIScreen.main.bounds.contains(newLocation)
1 голос
/ 28 июня 2011

Я предполагаю, что у вас полноэкранное окно (я думаю, довольно разумно).Затем вы можете преобразовать точку из координатного пространства окна в UIImageView, используя:

CGPoint point = ...
UIWindow window = ...
UIImageView imageView = ...
CGPoint transformedPoint = [window convertPoint:point toView:imageView];

Затем вы можете проверить, находится ли точка в кадре изображения, следующим образом:

if(CGRectContainsPoint(imageView.frame, transformedPoint))
{
    // do something interesting....
}
...