如何测试一个点是否在视图中

29

我有一个UIImageView和屏幕上的一个CGPoint。我想测试这个点是否在UIImageView中。最好的方法是什么?

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
}

15

在 Swift 4 中进行了测试

view.frame.contains(point)

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

point是你的CGPoint,myView是你的UIImageView。


2

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

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

然后,您可以按照以下方式测试点是否在图像视图的框架内:
if(CGRectContainsPoint(imageView.frame, transformedPoint))
{
    // do something interesting....
}

0

在 Swift 3 中

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接