不知道怎么學習Quartz 2D 索性就全部翻譯一遍,總結下demo,用的時候再結合大神的翻譯思路等等。中間因為實現播放器連播與防護鎖的問題,學習暫停了,繼續學習Quartz 2D之陰影。
陰影就像一個圖像被繪制在下面,并且有偏移量。就像一束光投射到圖像上形成的。陰影可以使一個圖像出現三維或者它看起來像是浮動的。
陰影有三個參數:X 軸偏移量 ,Y軸偏移量? ,模糊值。模糊值指定了圖像是否有明顯的邊緣或者是淡化的邊緣。
? How Shadows Work 如何工作
陰影是圖形狀態的一部分,你可以調用方法CGContextSetShadow,傳入一個上下文,偏移量以及模糊值。設置完后,陰影被繪制采用RGBA 這個方法默認透明度為 {0, 0, 0, 1.0/3.0}.你也可以調用方法CGContextSetShadowWithColor,多提供一個CGColor的對象作為參數。
在你調用CGContextSetShadow or CGContextSetShadowWithColor之前保存了圖形狀態,你可以通過恢復圖形狀態來關閉陰影。當你設置shadow color 為NULL時也就關閉了陰影。
Shadow Drawing Conventions Vary Based on the Context? 基于上下文的陰影繪制約定
先前描述的偏移量指定了投射到圖像上的陰影與 圖像的位置關系。上下文解釋了偏移量,偏移量也被用來計算陰影的位置:
??? ?? 一個正的偏移量表示陰影在圖像對象的右邊
??? ??在Mac OS X 中,一個正向Y 偏移表示向上偏移,這與Quartz 2D 的默認坐標系統是匹配的
??? ??在iOS中,假如你的應用使用Quartz 2D創建PDF 或者位圖上下文,一個正向Y 偏移表示向上偏移
??? ??在iOS中,假如你的應用上下文是通過UIKit 創建的,比如調用UIGraphicsBeginImageContextWithOptions,表示正向Y偏移是向下的。這和UIKit 的坐標系統是匹配的。
陰影繪制約定不會被當前轉換矩陣影響。
Painting with Shadows? 使用引用進行繪制
按照這些步驟來繪制陰影:
?1. 保存圖形狀態
2.調用方法 CGContextSetShaw,傳入合適的參數
3.完成你想繪制的陰影繪制
4. 恢復圖形狀態
按照這些步驟來繪制彩色的陰影:
1. 保存圖形狀態
2.創建一個CGColorSpace 對象以確保Quartz 能正確解釋陰影色值
3.創建一個CGColor對象來指定你繪制陰影所需要的顏色
4.調用方法 CGContextSetShadowWithColor ,傳入合適的參數
5.完成繪制
6.恢復圖形狀態
Listing 7-1 一個完整的方法設置 陰影
? demo地址:Quartz 2D 模式之demo