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?
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
}
Getestet in Swift 4
view.frame.contains(point)
if(CGRectContainsPoint([myView frame], point))
wo Punkt ist Ihr CGPoint und MyView ist Ihr UIImageView
In Swift 3
let isPointInFrame = UIScreen.main.bounds.contains(newLocation)
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....
}