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!)