2014-02-24 148 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混合使用,雖然可能不如你所願。