Żadna z tych odpowiedzi wziąć pod uwagę, że widok nie może być prostokątny.
Oto uniwersalna metoda, która działa również w widokach innych niż prostokątne. Pomyśl o tarczy zegarka lub o skomplikowanym kształcie ścieżki.
Ten fragment kodu podaje lokalny punkt z punktu globalnego (inaczej globalToLocal). (GlobalPoint w przestrzeni okna 0,0) Jeśli zmienisz argument na "toView", otrzymasz punkt "localToGlobal".
let localPoint = convertPoint(aPoint, fromView: self.window?.contentView)
Kod poniżej zwróciłby wartość true lub false, jeśli punkt znajdował się wewnątrz ścieżki lub nie.
CGPathContainsPoint(someCGPath,nil,localPoint,true)
UWAGA: Apoint jest globalPoint pochodzi od parametru w hitTest, może również pochodzić z:
(self.window?.mouseLocationOutsideOfEventStream)!
UWAGA: Nie może być bardziej poprawne sposób robienia tego. Ale to działa i nie dba o odwrócone widoki.
Czy możesz podać nam powód dlaczego? Zasadniczo ta technika nie jest świetnym pomysłem, ale trudno powiedzieć, nie wiedząc, co piszesz. –