iOS CAShapeLayer 與貝塞爾曲線的使用

CAShapeLayer 的基本使用

CAShapeLayer 簡介

1.CAShapeLayer 繼承于 CALayer, 可以使用 CALayer 的所有屬性值

2.CAShapeLayer 需要與貝塞爾曲線在一起使用才有意義

3.使用CAShapeLayer與貝塞爾曲線可以實現(xiàn)不在 view 的 drawRect 方法中繪制出我們想要的圖形

4.CAShapeLayer 屬于 CoreAnimation 框架,其動畫渲染是在 GPU 中,相對于 view 的 DrawRect 的方法,它使用的手機的 CPU 進行渲染,所以用CAShapeLayer 的效率極高,大大優(yōu)化手機性能

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

1.貝塞爾曲線創(chuàng)建矢量的路徑

2.貝塞爾曲線給CAShapeLayer 提供路徑,CAShapeLayer在提供的路徑中渲染,路徑閉環(huán),因此,路徑繪制出了Shape

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

好啦,理論已經(jīng)了解了差不多,現(xiàn)在用兩者繪制幾種簡單圖形

1.繪制橢圓

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

UIBezierPath *oval = [UIBezierPath bezierPathWithOvalInRect:CGRectMake(0, 0, 200, 100)];

//創(chuàng)建一個 CAShapeLayer

CAShapeLayer *layer = [CAShapeLayer layer];

layer.frame = CGRectMake(0, 0, 200, 100);

//禁止內(nèi)容顯示超出邊界

layer.masksToBounds = YES;

layer.position = self.view.center;

//顯示邊界值

layer.borderWidth = 1.f;

//CASHapeLayer 與 貝塞爾之間的 frame 互不干擾

//設(shè)置填充色

layer.fillColor = [UIColor redColor].CGColor;

//設(shè)置繪制色(邊框色)

layer.strokeColor = [UIColor purpleColor].CGColor;

//建立貝塞爾曲線與 CAShapeLayer 的關(guān)聯(lián)

layer.path = oval.CGPath;

//添加并且顯示

[self.view.layer addSublayer:layer];

2.繪制矩形?

其實只需要創(chuàng)建出矩形貝塞爾曲線,替換 shapeLayer 的 path 即可,同理圓形也是

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

UIBezierPath *rect = [UIBezierPath bezierPathWithRect:CGRectMake(0, 0, 200, 100)];

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

UIBezierPath *circle = [UIBezierPath bezierPathWithOvalInRect:CGRectMake(0, 0, 100, 100)];

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容