2012-01-22 46 views
2

我正在研究一個讓用戶堆疊圖形的應用程序。可能忽略UIImageViews透明部分的平移手勢?

圖形被實例化爲UIImageView,並且在實際圖形之外是透明的。我還使用平移手勢讓用戶在屏幕上拖動它們。

所以,當你有一堆不同大小和形狀的圖形在另一個上面時,你可能會覺得你正在觸摸一個子索引視圖,但實際上你觸摸了最頂層的視圖,因爲一些透明它的一部分在你的接觸點上盤旋。

我想知道是否有人有關於我們如何才能完成的想法,只需在圖像視圖的實體部分上收聽平移手勢。或者是一些會加強用戶體驗的東西,以便他們所觸及的是他們選擇的內容。謝謝

回答

6

創建您自己的UIImageView的子類。在你的子類中,如果點位於圖像的透明部分,則覆蓋pointInside:withEvent:方法以返回NO。

當然,您需要確定點是否在透明部分。 :)

如果你碰巧有一個CGPathUIBezierPath,概述了圖像的不透明部分,你可以做到這一點很容易地使用CGPathContainsPoint-[UIBezierPath containsPoint:]

如果您沒有方便的路徑,您將不得不檢查圖像的像素數據。在stackoverflow.com上已經有許多答案解釋瞭如何做到這一點。搜索get pixel CGImageget pixel UIImage