Czy istnieje sposób sprawdzenia, czy a CGPoint
znajduje się wewnątrz określonego CGRect
.
Przykład: Przeciągam UIImageView
i chcę sprawdzić, czy jego centralny punkt CGPoint
znajduje się wewnątrz innegoUIImageView
let view = ...
let point = ...
view.bounds.contains(point)
Zastosowanie CGRectContainsPoint()
:
bool CGRectContainsPoint(CGRect rect, CGPoint point);
Parametry
rect
Prostokąt do zbadania.point
Rzecz do zbadania. Wartość zwracana true, jeśli prostokąt nie jest pusty ani pusty, a punkt znajduje się wewnątrz prostokąta; w przeciwnym razie fałsz.Punkt jest uważany za wewnątrz prostokąta, jeśli jego współrzędne leżą wewnątrz prostokąta lub na minimalnej krawędzi X lub minimalnej Y.
W Swift wyglądałoby to tak:
Wersja Swift 3:
Link do dokumentacji . Pamiętaj, aby sprawdzić zawartość, jeśli oba są w tym samym układzie współrzędnych, jeśli nie, wymagane są konwersje ( przykład )
źródło
Punkt UIViewInside: withEvent: może być dobrym rozwiązaniem. Zwróci wartość logiczną wskazującą, czy dany CGPoint znajduje się w używanej instancji UIView. Przykład:
źródło
Szybko możesz to zrobić w ten sposób:
„ramka” to CGRect, a „punkt” to CGPoint
źródło
W celu c możesz użyć CGRectContainsPoint (yourview.frame, touchpoint)
W Swift 3 yourview.frame.contains (touchpoint)
źródło
To jest tak proste, że możesz użyć następującej metody do wykonania tego rodzaju pracy: -
W twoim przypadku możesz przekazać imagView.center jako punkt, a inny imagView.frame jako prostokąt w metodzie about.
Możesz również użyć tej metody w poniższej metodzie UITouch :
źródło
Zaczynam się uczyć, jak kodować w Swift i próbowałem rozwiązać ten problem, oto co wymyśliłem na placu zabaw Swifta:
Drukuje wewnątrz
źródło
źródło