UIDynamicItem с непрямоугольными границами
Итак, я изучаю динамику UIKit, и одна проблема, с которой я столкнулся, заключается в том, хочу ли я создать UIView с пользовательским drawRect:
(например, скажем, я хочу нарисовать треугольник), похоже, нет способа указать путь к UIView (или, скорее, к UIDynamicItem), который будет использоваться для UICollisionBehavior.
Моя цель на самом деле - иметь на экране многоугольники, которые сталкиваются друг с другом именно так, как и следовало ожидать.
Я придумал решение соединить несколько видов вместе, но это кажется излишним для того, что я хочу.
Есть ли какой-нибудь простой способ сделать это, или я действительно должен сшивать взгляды вместе?
Дэн
2 ответа
Посмотрите видео WWDC 2013 на эту тему. Они очень ясны: ради эффективности и скорости во время столкновений имеют значение только (прямоугольные) границы вида.
РЕДАКТИРОВАТЬ В iOS 9 динамический элемент может иметь настроенную границу столкновения. Вы можете иметь прямоугольник, заданный рамкой, эллипс, заданный рамкой, или произвольную форму - выпуклую простую замкнутую UIBezierPath против часовой стрелки. Соответствующие свойства, collisionBoundsType
и (для пользовательской формы) collisionBoundingPath
, только для чтения, поэтому вам придется создать подкласс для их установки.
Если вы действительно хотите столкнуться с полигонами, вы можете рассмотреть SpriteKit и его физический движок (похоже, он имеет много общего с UIDynamics). Он может смешиваться с UIKit, хотя, возможно, не так гладко, как хотелось бы.