2010-12-13 23 views
0

Est-ce que quelqu'un sait quel type de surcharge CGRectContainsRect et CGRectIntersectsRect ont? J'essaie de suivre et de tester un geste de l'utilisateur et je trouve que je vais probablement devoir utiliser une combinaison des deux, mais je ne suis pas sûr de l'impact.comparaison de rectangles

Imaginez une grille de 5 places et que vous souhaitez tester si l'utilisateur a tracé une ligne de la place 1 à 2.

facile, CGRectContainsRect me permet de savoir si le fit dessiner seulement dans la case 1 et 2.

Si elles dessinaient dans les carrés 1, 2 et 3, le même test retournerait faux car CGRectContainsRect dirait NON. OK non disons que vous voulez tester pour dessiner dans les carrés 1,2 et 3 et l'utilisateur dessine seulement dans les carrés 1 et 2, CGRectContainsRect renverra OUI parce que juste le coup de l'utilisateur est dans les carrés 1, 2 et 3 ........ mais pas réellement dans le carré 3 donc une fausse lecture est obtenue!

+0

Checkout hitTest qui vous permettra de voir si une touche était dans un UIView particulier. En fait, une approche plus simple que la comparaison de rectangles peut être d'écrire un reconnaisseur de gestes. De votre description, cela ressemble à un geste personnalisé qui est déclenché lorsque l'utilisateur déplace le doigt sur des carrés, où chaque carré touché est enregistré dans l'ordre. – Anurag

+0

Vous pourriez utiliser des *** *** par image et ne pas même commencer à penser à la performance. C'est un non-problème. – Fattie

Répondre

1

Vous pouvez itérer sur chacun des 5 carrés, en vérifiant CGRectIntersectsRect sur chacun d'eux. Pour un plus grand nombre de cases, cela peut devenir très inefficace, mais c'est la meilleure façon de penser.

+0

merci à tous pour vos réponses, bonne aide ;-) – user7865437