ubicacion significa que punto exacta buscar azul ios xcode collision-detection cgrect cgpoint

ios - significa - es exacta la ubicacion de buscar mi iphone



IOS: verificar si un punto está dentro de un rect (7)

¿Hay alguna manera de verificar si un CGPoint está dentro de un CGRect específico CGRect Por ejemplo: estoy arrastrando un UIImageView y quiero verificar si su punto central CGPoint está dentro de otro UIImageView ¿cómo puedo hacer?


En Swift que se vería así:

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

Swift 3 versión:

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

CGRectContainsPoint() . Recuerde verificar la contención si ambos están en el mismo sistema de coordenadas, de lo contrario, se requieren conversiones ( algunos ejemplos )


En el objetivo c puede usar CGRectContainsPoint (yourview.frame, touchpoint)

-(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{ UITouch* touch = [touches anyObject]; CGPoint touchpoint = [touch locationInView:self.view]; if( CGRectContainsPoint(yourview.frame, touchpoint) ) { }else{ }}

En swift 3 yourview.frame.contains (punto de contacto)

override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) { let touch:UITouch = touches.first! let touchpoint:CGPoint = touch.location(in: self.view) if wheel.frame.contains(touchpoint) { }else{ } }


Es muy simple, puedes usar el siguiente método para hacer este tipo de trabajo:

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

En su caso, puede pasar imagView.center como punto y otra imagView.frame como rect en el método.

También puede usar este método en el siguiente Método UITouch :

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { }


Estoy empezando a aprender a programar con Swift y estaba tratando de resolver esto también, esto es lo que se me ocurrió en el patio de Swift:

// Code var x = 1 var y = 2 var lowX = 1 var lowY = 1 var highX = 3 var highY = 3 if (x, y) >= (lowX, lowY) && (x, y) <= (highX, highY ) { print("inside") } else { print("not inside") }

Imprime dentro


Punto de vista de UIView: withEvent: podría ser una buena solución. Devolverá un valor booleano que indica si el CGPoint dado está en la instancia de UIView que está utilizando. Ejemplo:

UIView *aView = [UIView alloc]initWithFrame:CGRectMake(0,0,100,100); CGPoint aPoint = CGPointMake(5,5); BOOL isPointInsideView = [aView pointInside:aPoint withEvent:nil];


Rápidamente puedes hacerlo así:

let isPointInFrame = frame.contains(point)

"frame" es un CGRect y "point" es un CGPoint


Ver CGRectContainsPoint() en la documentación.

bool CGRectContainsPoint(CGRect rect, CGPoint point);

Parámetros

  • rect El rectángulo para examinar.
  • point El punto para examinar. Valor devuelto verdadero si el rectángulo no es nulo o está vacío y el punto está ubicado dentro del rectángulo; de lo contrario, falso.

Se considera un punto dentro del rectángulo si sus coordenadas se encuentran dentro del rectángulo o en el mínimo X o borde mínimo Y.