正常情況下,在使用CoreGraphics架構中的方法進行圖形繪制時,每一閉合的圖形都是一個獨立的層,如果在繪制時添加了陰影效果,則通過陰影可以很明顯的看到圖形的分層情況,後繪制的圖形在上層,先繪制的圖形在下層,示例代碼如下:
-(void)drawRect:(CGRect)rect{
float width = rect.size.width/2;
CGPoint center = CGPointMake(rect.size.width/2, rect.size.height/2);
CGSize myShadowOffset = CGSizeMake (10, -20);
CGContextRef myContext = UIGraphicsGetCurrentContext();
//設定陰影
CGContextSetShadow (myContext, myShadowOffset, 10);
//繪制三個圓形
CGContextSetRGBFillColor (myContext, 0, 1, 0, 1);
CGContextFillEllipseInRect(myContext, CGRectMake(center.x-width/2, center.y-width/4*3, width, width));
CGContextSetRGBFillColor (myContext, 0, 0, 1, 1);
CGContextFillEllipseInRect(myContext, CGRectMake(center.x-width/4, center.y-width/4, width, width));
CGContextSetRGBFillColor (myContext, 1, 0, 0, 1);
CGContextFillEllipseInRect(myContext, CGRectMake(center.x-width/4*3, center.y-width/4, width, width));
}
運作效果如下圖所示:

從圖中可以發現,所繪制的3個圓形并非是在同一層級上,有時開發者可能需要繪制邊界複雜的圖形,還以上面的例子來說,如果開發者需要繪制某個圖形的邊界是有3個圓形拼接而成,出現這樣的層級效果是不合理的。CoreGraphics架構中也提供了進行圖形聚合繪制的方法,示例如下:
CGContextBeginTransparencyLayer (myContext, NULL);
//開啟圖形聚合繪制
//之後的繪制代碼都将繪制到統一層上
//結束聚合繪制
CGContextEndTransparencyLayer (myContext);
效果如下圖所示:
有了聚合繪制這樣的方法,進行複雜圖形的繪制将更加靈活!