29

我有一个UIImageView,我CGPoint在屏幕上有一个。我希望能够测试该点以查看它是否在UIImageView. 最好的方法是什么?

4

5 回答 5

51

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
}
于 2011-06-28T03:06:44.747 回答
14

在 Swift 4 中测试

view.frame.contains(point)
于 2018-03-24T22:57:46.403 回答
2
if(CGRectContainsPoint([myView frame], point))

其中 point 是您的 CGPoint 而 myView 是您的 UIImageView

于 2011-06-28T03:02:31.353 回答
2

我假设您有一个全屏窗口(我认为这很合理)。然后,您可以使用以下方法将点从窗口的坐标空间转换为 UIImageView:

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

然后,您可以测试该点是否在图像视图的框架中,如下所示:

if(CGRectContainsPoint(imageView.frame, transformedPoint))
{
    // do something interesting....
}
于 2011-06-28T03:05:13.767 回答
0

在斯威夫特 3

let isPointInFrame = UIScreen.main.bounds.contains(newLocation)
于 2017-05-03T11:37:08.037 回答