如何测试点是否在视图中

时间:2011-06-28 02:58:27

标签: iphone xcode uiview position cgpoint

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

5 个答案:

答案 0 :(得分:47)

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
}

答案 1 :(得分:5)

在Swift 4中测试

view.frame.contains(point)

答案 2 :(得分:2)

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

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

答案 3 :(得分:1)

我假设你有一个全屏窗口(我觉得非常合理)。然后你可以使用以下方法将点从窗口的坐标空间转换为UIImageView:

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

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

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

答案 4 :(得分:1)

在Swift 3中

let isPointInFrame = UIScreen.main.bounds.contains(newLocation)