2012-03-07 40 views
0

我基本上試圖達到這個效果。它可以通過一個帶有透明孔的PNG完成,然後堆疊在photo.jpg UIView的頂部。或者,我也看到了一種方法,您可以直接使用CGImageMaskCreate創建一個蒙版。我不想使用該功能,因爲我希望用戶能夠與photo.jpg層交互(通過移動它,使其旋轉等):創建一個沒有直接圖像處理的遮罩層?

enter image description here

其本質上是兩個UIViews直接堆疊在彼此的頂部。

但是,如果不是使用藍色,我想要使用另一種顏色,或者甚至用[UIColor colorPatternWithImage:]爲遮罩層構圖。我不想爲每種情況製作一百萬個不同的PNG。

我需要某種方式來以編程方式重新創建我的面具嗎?有沒有辦法將我的面具形狀轉換成代碼?任何幫助表示讚賞。謝謝

回答

4

CALayer有一個屬性mask,這是另一個CALayer定義要使用的掩碼。您可以使用CAShapeLayer來定義蒙版,然後將其設置爲呈現您的模糊圖像/顏色/圖案/任何其他圖層的mask。您也可以使用常規的CALayer作爲掩模,將半透明圖像作爲內容,這取決於您是否希望自定義孔的大小/形狀。

注意事項:CAShapeLayer比正常層慢,mask也比非屏蔽慢。您可能需要確保性能可以接受。您可能還想嘗試shouldRasterize標誌,但只要圖層是靜態的(即不是動畫),這隻會提高性能(以內存爲代價)。