How to test if a point is in a view

后端 未结 5 1890
慢半拍i
慢半拍i 2020-12-14 16:46

I have a UIImageView and I have a CGPoint on the screen. I want to be able to test that point to see if it is in the UIImageView. What

相关标签:
5条回答
  • 2020-12-14 17:17

    Tested in Swift 4

    view.frame.contains(point)
    
    0 讨论(0)
  • 2020-12-14 17:30

    I'll assume you have a full-screen window (pretty reasonable, I think). Then you can transform the point from the window's coordinate space to the UIImageView's using:

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

    Then, you can test if the point is in the image view's frame as follows:

    if(CGRectContainsPoint(imageView.frame, transformedPoint))
    {
        // do something interesting....
    }
    
    0 讨论(0)
  • 2020-12-14 17:32

    CGPoint is no good with a reference point. If your point is in window's coordinates then you can get it using

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

    You may also call pointInside:withEvent: method

    if ( [imageView pointInside:locationInView withEvent:nil] ) {
        // Point lies inside the bounds
    }
    
    0 讨论(0)
  • 2020-12-14 17:36

    In Swift 3

    let isPointInFrame = UIScreen.main.bounds.contains(newLocation)
    
    0 讨论(0)
  • 2020-12-14 17:37
    if(CGRectContainsPoint([myView frame], point))
    

    where point is your CGPoint and myView is your UIImageView

    0 讨论(0)
提交回复
热议问题