具有非矩形边界的UIDynamicItem

时间:2014-02-24 22:42:08

标签: ios objective-c uiview uikit-dynamics uidynamicbehavior

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

我的目标实际上是让屏幕上的多边形完全相互碰撞。

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

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

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

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