CAShapeLayer

(1)1,CAShapeLayer繼承自CALayer,可使用CALayer的所有屬性

? ? ? ? ? 2,CAShapeLayer需要和貝塞爾曲線配合使用才有意義。

(2)關(guān)于CAShapeLayer和DrawRect的比較

? ? ? ? ?DrawRect:DrawRect屬于CoreGraphic框架,占用CPU,消耗性能大

? ? ? ? ?CAShapeLayer:CAShapeLayer屬于CoreAnimation框架,通過GPU來渲染圖形,節(jié)省性能。動畫渲染直接提交給手機GPU,不消耗內(nèi)存。gpu是圖像處理器。

(3)貝塞爾曲線與CAShapeLayer的關(guān)系

? ? ? 1,CAShapeLayer中shape代表形狀的意思,所以需要形狀才能生效

? ? ?2,貝塞爾曲線可以創(chuàng)建基于矢量的路徑

? ? ? 3,貝塞爾曲線給CAShapeLayer提供路徑,CAShapeLayer在提供的路徑中進行渲染。路徑會閉環(huán),所以繪制出了Shape

? ? 4,用于CAShapeLayer的貝塞爾曲線作為Path,其path是一個首尾相接的閉環(huán)的曲線,即使該貝塞爾曲線不是一個閉環(huán)的曲線

? ? 5,畫出一個圓代碼

//創(chuàng)建出CAShapeLayer

self.shapeLayer = [CAShapeLayer layer];

self.shapeLayer.frame = CGRectMake(0, 0, 100, 100);

//設(shè)置shapeLayer的尺寸和位置 一般和它顯示的view bounds 一樣

self.shapeLayer.position = self.view.center;

self.shapeLayer.fillColor = [UIColor clearColor].CGColor;//填充顏色為ClearColor

//設(shè)置線條的寬度和顏色

self.shapeLayer.lineWidth = 1.0f;

self.shapeLayer.strokeColor = [UIColor redColor].CGColor;

//創(chuàng)建出圓形貝塞爾曲線

UIBezierPath *circlePath = [UIBezierPath bezierPathWithOvalInRect:CGRectMake(0, 0, 50, 50)];

//讓貝塞爾曲線與CAShapeLayer產(chǎn)生聯(lián)系

self.shapeLayer.path = circlePath.CGPath;

//添加并顯示

[self.view.layer addSublayer:self.shapeLayer];}

? ?6,圓形加載圖

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容