webentwicklung-frage-antwort-db.com.de

So testen Sie, ob sich ein Punkt in einer Ansicht befindet

Ich habe eine UIImageView und ich habe eine CGPoint auf dem Bildschirm. Ich möchte in der Lage sein, diesen Punkt zu testen, um festzustellen, ob er in der UIImageView enthalten ist. Was wäre der beste Weg, dies zu tun?

22
Blane Townsend

CGPoint ist mit einem Bezugspunkt nicht gut. Wenn Ihr Punkt in den Fensterkoordinaten liegt, können Sie ihn mit abrufen

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

Sie können auch pointInside:withEvent: method aufrufen

if ( [imageView pointInside:locationInView withEvent:nil] ) {
    // Point lies inside the bounds
}
45

Getestet in Swift 4

view.frame.contains(point)
4
Den
if(CGRectContainsPoint([myView frame], point))

wo Punkt ist Ihr CGPoint und MyView ist Ihr UIImageView

2
Kal

In Swift 3

let isPointInFrame = UIScreen.main.bounds.contains(newLocation)
1
Darshit Shah

Ich gehe davon aus, dass Sie ein Vollbildfenster haben (ziemlich vernünftig, denke ich). Dann können Sie den Punkt aus dem Koordinatenraum des Fensters in die UIImageView transformieren, indem Sie Folgendes verwenden:

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

Anschließend können Sie wie folgt testen, ob sich der Punkt im Rahmen der Bildansicht befindet:

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