0

所以我正在研究 UIKit Dynamics,我遇到的一个问题是,如果我想创建一个自定义的 UIView drawRect:(例如,假设我想绘制一个三角形),似乎没有办法指定路径用于 UICollisionBehavior 的 UIView(或者更确切地说是 UIDynamicItem)。

我的目标真的是让屏幕上的多边形完全按照人们的预期相互碰撞。

我想出了一个将多个视图拼接在一起的解决方案,但这对于我想要的东西来说似乎有点过分了。

有什么简单的方法可以做到这一点,还是我真的必须将视图拼接在一起?

4

2 回答 2

2

观看有关此主题的 WWDC 2013 视频。它们非常清楚:为了效率和速度,在碰撞期间只有视图的(矩形)边界很重要。

编辑在 iOS 9 中,动态项目可以有自定义的碰撞边界。你可以有一个由框架决定的矩形,一个由框架决定的椭圆,或者一个自定义的形状——一个逆时针凸的简单封闭 UIBezierPath。相关属性collisionBoundsType和(对于自定义形状)collisionBoundingPath是只读的,因此您必须进行子类化才能设置它们。

于 2014-02-24T22:55:36.183 回答
0

如果你真的想碰撞多边形,你可以考虑 SpriteKit 及其物理引擎(它似乎与 UIDynamics 有很多共同点)。它可以与 UIKit 混合,虽然可能不如你想的那么顺利。

于 2014-02-24T23:32:24.833 回答