透明层:透明层,是由两个活两个以上的对象复合然后生成一个复合图形(也是一个单一的对象)。比如三个圆的阴影。
假如上图没有做透明层的渲染,结果是这样的。
How Transparency Layers Work 透明层是如何工作的。
Quartz 透明层和很多漂亮的图形应用中的layer是相似的。Layers是独立的实体。Quartz为每个上下文保存了一个透明层栈区,这些透明层可以被嵌套。但是因为这些层是堆栈的一部分,你不能独立第操作他们。
当你调用CGContextBeginTransparencyLayer后,开始透明层的工作。这个方法需要传递两个参数,一个上下文,一个是一个CFDictionary对象。这个对象在Quartz 2D API中不可用,所以传递NULL即可。在调用后,上下文状态除了透明度(被设置为1)、阴影(被关闭)混合模式(这里设置为正常)和其他的参数 保存不变从而绘制透明层。
当你开始绘制时,你可以在你要操作的layer上随意绘制。上下文的绘制操作被绘制进一个完全透明的背景中。这个背景可以当做上下文的一个断堵缓冲区。
当你绘制完成后,调用CGContextEndTransparencyLayer,Quartz 融合全局透明度与阴影的图形状态以及裁剪区域生成最终的结果。
Painting to a Transparency Layer 绘制透明层
绘制透明层三部曲:
1.调用 Painting to a Transparency Layer
2.绘制你想在透明层里融合的对象。
3.调用方法CGContextEndTransparencyLayer。
下面的方法中展示了怎么使用一个透明层。
demo 效果图
demo地址:TransparencyLayers