我有UIImageView
,屏幕上显示CGPoint
。我希望能够测试该点以查看它是否在UIImageView
中。最好的方法是什么?
答案 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)