2014-02-24 117 views
0

所以我正在调查UIKit动态和我遇到的一个问题是如果我想创建一个自定义drawRect:(例如,让我们说我想画一个三角形)的UIView,似乎没有办法指定用于UICollisionBehavior的UIView(或者说UIDynamicItem)的路径。UIDynamicItem与非矩形边界

我的目标的确是让屏幕上的多边形与另一个人所期望的相互碰撞。

我想出了一个拼接多个视图在一起的解决方案,但这似乎是我想要的矫枉过正。

有没有一些简单的方法来做到这一点,还是我真的必须一起缝合视图?

回答

1

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

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

+0

顺便说一句,您的解决方法非常巧妙。 – matt

+0

我刚看完第一部视频,我不记得他们说过这些,但我仍然有第二部视频(高级动态)可以观看,所以我认为它在那里。我想我会拼接! – DanZimm

+0

iOS 9已添加此能力 – WMios

0

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