透明層:透明層抹凳,是由兩個(gè)活兩個(gè)以上的對(duì)象復(fù)合然后生成一個(gè)復(fù)合圖形(也是一個(gè)單一的對(duì)象)。比如三個(gè)圓的陰影。?
假如上圖沒有做透明層的渲染友驮,結(jié)果是這樣的。
How Transparency Layers Work 透明層是如何工作的驾锰。
Quartz 透明層和很多漂亮的圖形應(yīng)用中的layer是相似的喊儡。Layers是獨(dú)立的實(shí)體。Quartz為每個(gè)上下文保存了一個(gè)透明層棧區(qū)稻据,這些透明層可以被嵌套。但是因?yàn)檫@些層是堆棧的一部分买喧,你不能獨(dú)立第操作他們捻悯。
當(dāng)你調(diào)用CGContextBeginTransparencyLayer后,開始透明層的工作淤毛。這個(gè)方法需要傳遞兩個(gè)參數(shù)今缚,一個(gè)上下文,一個(gè)是一個(gè)CFDictionary對(duì)象低淡。這個(gè)對(duì)象在Quartz 2D API中不可用姓言,所以傳遞NULL即可。在調(diào)用后蔗蹋,上下文狀態(tài)除了透明度(被設(shè)置為1)何荚、陰影(被關(guān)閉)混合模式(這里設(shè)置為正常)和其他的參數(shù) 保存不變從而繪制透明層。
當(dāng)你開始繪制時(shí)猪杭,你可以在你要操作的layer上隨意繪制餐塘。上下文的繪制操作被繪制進(jìn)一個(gè)完全透明的背景中。這個(gè)背景可以當(dāng)做上下文的一個(gè)斷堵緩沖區(qū)皂吮。
當(dāng)你繪制完成后戒傻,調(diào)用CGContextEndTransparencyLayer,Quartz 融合全局透明度與陰影的圖形狀態(tài)以及裁剪區(qū)域生成最終的結(jié)果蜂筹。
Painting to a Transparency Layer? 繪制透明層
繪制透明層三部曲:
1.調(diào)用 Painting to a Transparency Layer
2.繪制你想在透明層里融合的對(duì)象需纳。
3.調(diào)用方法CGContextEndTransparencyLayer。
下面的方法中展示了怎么使用一個(gè)透明層艺挪。
?demo 效果圖
?demo地址:TransparencyLayers?