Ho due UIImageViews, uno di questi si sta spostando da sinistra a destra, l'altro è touch draggable. Voglio che NSLog mostri un messaggio sulla console ogni volta che imagetwo si sovrappone a imageone. Come faccio a fare questo?Come posso rilevare ogni volta che due UIImageView si sovrappongono?
5
A
risposta
11
È possibile utilizzare la funzione CGRectIntersectsRect
per testare facilmente l'intersezione del rettangolo, a condizione che UIImageViews condivida la stessa superview (più esattamente, hanno lo stesso spazio di coordinate).
probabile che sarà necessario aggiungere codice simile al seguente:
-(void) touchesEnded:(NSSet *) touches {
if(CGRectIntersectsRect([imageViewA frame], [imageViewB frame])) {
NSLog(@"Do something.");
}
}
al UIView che ospita entrambe le viste di immagini, o un metodo simile che viene chiamato ogni volta che la resistenza è stata completata.
0
È possibile utilizzare:
CGRectIsNull (CGRectIntersection (view1.bounds, view2.bounds));
1
provare qualcosa di simile.
if (CGRectContainsRect([myImageView1 frame], [myImageView2 frame])) {
NSLog(@"Overlaped, it's working!");
}
0
In Swift 3.0 è diventato ...
if (self.image2P.bounds.contains(self.image3P.bounds)) {
print("Overlaped, it's working!")
}
Questo ha fatto il trucco, vi ringrazio molto! – John
Se non condividono lo stesso spazio di coordinate: 'BOOL intersects = CGRectIntersectRect (viewA.bounds, [viewA convertRect: viewB.bounds fromView: viewB])' – nielsbot