UIDynamicItem с непрямоугольными границами

Итак, я изучаю динамику UIKit, и одна проблема, с которой я столкнулся, заключается в том, хочу ли я создать UIView с пользовательским drawRect: (например, скажем, я хочу нарисовать треугольник), похоже, нет способа указать путь к UIView (или, скорее, к UIDynamicItem), который будет использоваться для UICollisionBehavior.

Моя цель на самом деле - иметь на экране многоугольники, которые сталкиваются друг с другом именно так, как и следовало ожидать.

Я придумал решение соединить несколько видов вместе, но это кажется излишним для того, что я хочу.

Есть ли какой-нибудь простой способ сделать это, или я действительно должен сшивать взгляды вместе?

Дэн

2 ответа

Решение

Посмотрите видео WWDC 2013 на эту тему. Они очень ясны: ради эффективности и скорости во время столкновений имеют значение только (прямоугольные) границы вида.

РЕДАКТИРОВАТЬ В iOS 9 динамический элемент может иметь настроенную границу столкновения. Вы можете иметь прямоугольник, заданный рамкой, эллипс, заданный рамкой, или произвольную форму - выпуклую простую замкнутую UIBezierPath против часовой стрелки. Соответствующие свойства, collisionBoundsType и (для пользовательской формы) collisionBoundingPath, только для чтения, поэтому вам придется создать подкласс для их установки.

Если вы действительно хотите столкнуться с полигонами, вы можете рассмотреть SpriteKit и его физический движок (похоже, он имеет много общего с UIDynamics). Он может смешиваться с UIKit, хотя, возможно, не так гладко, как хотелось бы.

Другие вопросы по тегам