Jak używać CGRectContainsPoint () z obróconym UIView

mamUIView, a użytkownik może dotknąćUIView „wybierz” lub zaznacz „rzecz” w aplikacji, którą reprezentuje. używamCGRectContainsPoint(thing.frame,tapPoint) aby to osiągnąć, gdziething.frame jest ramąUIView, itapPoint to punkt z podsłuchuUITapGestureRecognizer. To działa idealnie.

..z wyjątkiem kiedyUIView jest obracany przez ustawienietransform własność (zCGAffineTransform wartość). KiedyUIView jest obracany w ten sposóbframe staje się płaskim kwadratem otaczającym obrócony widok.

Oto ilustracja problemu (właściwość ramki jest oznaczona jako A, a wizualnaUIView bounds są oznaczone B):

Gdy nie jest obracany

+------------------+
|      A == B      |
+------------------+

Po obróceniu

+-----------------+
|  A        .     |
|         .   .   |
|       .       . |
|     .       .   |
|   .    B  .     |
| .       .       |
|   .   .         |
|     .           |
+-----------------+

Chcę uchwycić stuknięcia, które są w granicach rectB (prawdziwe graniceUIView, obrócony), ale NIE, gdy są tylko wewnątrz rectA (wartośćframe własnośćUIView) i nieB.

Jak mogę obliczyć, czy dany punkt zaczepienia znajduje się w prawdziwych granicach / ramce / granicach obróconegoUIView? Czy istnieje metoda wygodna? A może będę musiał obliczyć współrzędne i wymiaryB używając mojej własnej geometrii?

(Jeśli to drugie, prosimy o dołączenie sugestii, abyśmy mogli udzielić odpowiedzi jak najbardziej kompletnej. Dziękujemy!)

questionAnswers(3)

yourAnswerToTheQuestion