2011-03-13 160 views
0

如何爲不是CGRect的UIImageView創建邊界框?爲UIImageView創建邊界框

我想在我的視圖中有對象,它應該顯示圖像以及檢測碰撞。

問題是我希望這些對象是任何形狀,而不是將它們安裝到CGRect中,並檢測盒子內部區域的碰撞,但它們是實際圖像。

如何實現這一目標?

+0

這是一款遊戲嗎?如果是這樣的考慮Cocos2D – amattn

回答

1

這是一個不平凡的問題。但基礎知識是CGRect是一個矩形,矩形內的命中測試相當容易理解。然而,你聽起來像你想要一個更復雜的形狀。 UIImageView顯示圖像。它不知道你想要用於碰撞測試的形狀。所以你必須告訴它。

一件容易的事情就是查看顯示圖像的alpha/transparent值來創建一個形狀。因此,要回答這個問題是一個點擊圖像,我們找出圖像中點的位置,如果alpha大於0,則返回true。如果你這樣做,你可以創建任何帶有透明背景的圖像,代碼將只是工作。

如果這不適合你,那麼也可以對點和多邊形進行點擊測試。

How can I determine whether a 2D Point is within a Polygon?

+0

真棒和聰明的想法。謝謝你。它應該完美地工作。這在ImageView本身中檢測到alpha,而不是這個測試後的視圖的alpha? – jarryd

+0

是的,它應該工作。這向您展示瞭如何從UIImage獲取數據http://stackoverflow.com/questions/448125/how-to-get-pixel-data-from-a-uiimage-cocoa-touch-or-cgimage-core-graphics – madmik3

+0

在java的PixelGrabber getPixel()的obj-c中是否有類似的方法? – jarryd