154

CGPointa が特定の内にあるかどうかを確認する方法はありCGRectますか?

例: をドラッグしていて、その中心点が別の 内UIImageViewにあるかどうかを確認したい。CGPointUIImageView

4

8 に答える 8

329

スイフト4

let view = ...
let point = ...
view.bounds.contains(point)

Objective-C

使用CGRectContainsPoint():

bool CGRectContainsPoint(CGRect rect, CGPoint point);

パラメーター

  • rect 調べる四角形。
  • point 調べるポイント。戻り値 四角形が null または空ではなく、ポイントが四角形内にある場合は true。それ以外の場合は false。

点の座標が長方形の内側にあるか、最小 X エッジまたは最小 Y エッジにある場合、その点は長方形の内側にあると見なされます。

于 2011-11-07T14:23:59.990 に答える
40

Swift では、次のようになります。

let point = CGPointMake(20,20)
let someFrame = CGRectMake(10,10,100,100)
let isPointInFrame = CGRectContainsPoint(someFrame, point)

スウィフト 3 バージョン:

let point = CGPointMake(20,20)
let someFrame = CGRectMake(10,10,100,100)
let isPointInFrame = someFrame.contains(point)

ドキュメントへのリンク。両方が同じ座標系にある場合は必ず封じ込めを確認してください。そうでない場合は変換が必要です (いくつかの例)

于 2015-10-29T09:03:08.280 に答える
12

UIView の pointInside:withEvent: が良い解決策になる可能性があります。指定された CGPoint が使用している UIView インスタンスにあるかどうかを示すブール値を返します。例:

UIView *aView = [UIView alloc]initWithFrame:CGRectMake(0,0,100,100);
CGPoint aPoint = CGPointMake(5,5);
BOOL isPointInsideView = [aView pointInside:aPoint withEvent:nil];
于 2011-11-07T14:24:27.707 に答える
3

それはとても簡単です、あなたはこの種の仕事をするために次の方法を使うことができます:-

-(BOOL)isPoint:(CGPoint)point insideOfRect:(CGRect)rect
{
    if ( CGRectContainsPoint(rect,point))
        return  YES;// inside
    else
        return  NO;// outside
}

あなたの場合、imagView.centerを point として、別のimagView.frameを rect として about メソッドに渡すことができます。

このメソッドは、次のUITouchメソッドでも使用できます。

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
}
于 2015-07-06T10:19:40.013 に答える