Определить, когда повернутый UIView пересекает другой UIView - PullRequest
0 голосов
/ 20 мая 2019

enter image description here У меня есть UIView, который может вращаться при заданном угле поворота. Я попытался использовать кадры этого и другого представления в качестве hitTest - но, как вы можете видеть, это не работает.

Я полагаю, что после поворота кадр для hitTesting пересчитывается для повернутого вида, создавая кадр, отличный от того, который представлен в пользовательском интерфейсе (даже если у меня есть рамка вокруг кадра этого вида, это фактический кадр другой).

user.transform = CGAffineTransform(rotationAngle: CGFloat(user.userData.heading))
self.hitTestView.transform = CGAffineTransform(rotationAngle: CGFloat(user.userData.heading))

//hitTestView is the "cone" uiview with an image in it representing a cone.
//myTestZone is the purple box.
if self.hitTestView.frame.intersects(self.myTestZone.frame) {
    self.hitTestView.showRed(bValue: true)
} else {
    self.hitTestView.showRed(bValue: false)
}

Теперь я знаю, что я не должен использовать хит-тест с фреймами здесь - я искал что-то близкое - я должен был использовать математику, чтобы определить, пересекается ли этот «конус» с фиолетовой рамкой. Однако я не уверен, как лучше это делать.

Я ищу помощь по математике, чтобы вычислить, перекрывает ли конус (круговая часть) какую-либо часть другого вида (стационарный). Надеясь на некоторый рабочий код, если возможно.

...