? ? 上文提到圖層的基本概念,這篇文章主要分開講述圖層CALayer的子類。包括:CAShapeLayer、CATextLayer、CATransformLayer、CAGradientLayer、CAReplicatorLayer、CAScrollLayer、CATiledLayer、CAEmitterLayer、CAEAGLLayer、AVPlayerLayer。
CAShapeLayer
? ? CAShapeLayer是一個通過矢量路徑繪制自定義形狀的CALayer子類,這個形狀可以為封閉的,也可以是不封閉的。但是你只有一次機會設置這些屬性,如果你想用不同顏色或風格來繪制多個形狀,只能為每個形狀都準備一個CAShapeLayer圖層。矢量路徑賦值給path,這里涉及到一個類UIBezierPath。UIBezierPath繼承于NSObject,可以創建基于矢量的路徑。此類是Core Graphics框架關于path的一個OC封裝。使用此類可以定義圓形、矩形、三角形、扇形等形狀,也可以創建復雜的曲線形狀。
? ? UIBezierPath提供了一些默認的方法給我們調用,我們也可以自己自定義路徑。
? ?UIBezierPath也提供了繪制二次貝塞爾曲線和三次貝塞爾曲線的系統方法。這個不對貝塞爾曲線進行解釋,自行百度。
至此UIBezierPath基本用法我們已經了解了,接下來就是將設置好的路徑賦值給CAShapeLayer進行繪制。
CAGradientLayer
? ? CAGradientLayer用于處理顏色漸變的圖層。用法很簡單,只要我們設置要顯示的顏色數組和繪制的起點和終點即可。有一點需要注意,顏色的值需要為CGColorRef類型,但是OC數組只接受OC對象,即要在每個元素前面加上id類型,如果單單元素是UIColor類型,圖層是沒辦法正常顯示的。
? ??
CAReplicatorLayer
? ? CAReplicatorLayer是一個容器,能對其子圖層自動進行復制和屬性偏移,利用它可以創建出類似倒影的效果和變換。
CAScrollLayer
? ? CAScrollLayer 提供了和UIScrollView一樣的基本功能,但它不能響應用戶的觸摸和檢查滾動范圍。即通過直接操作圖層邊界來實現滑動。CAScrollLayer能控制滾動的范圍:kCAScrollNone(滾動禁止)、kCAScrollVertically(垂直允許)、kCAScrollHorizontally(水平允許)、kCAScrollBoth(完全滾動)。
(待補充)
CATiledLayer
CAEmitterLayer
CATextLayer
CAEAGLLayer
AVPlayerLayer
CATransformLayer