CAShapeLayer 屬性
@property(nullable) CGPathRef path;
// 用來(lái)定義呈現(xiàn)形狀的路徑 , 如果該路徑延伸到父Layer之外的范圍,
并不會(huì)自動(dòng)被父Layer裁剪掉多出的部分,除非是正常的被遮蓋的情
況下才會(huì)被父Layer層自動(dòng)裁剪掉
(注意點(diǎn): 雖然這個(gè)路徑可以用來(lái)做動(dòng)畫,當(dāng)它的路徑被改變的時(shí)候會(huì)默認(rèn)創(chuàng)建一個(gè)隱式動(dòng)畫)
// 路徑填充顏色
@property(nullable) CGColorRef fillColor;
// 將顏色填充整個(gè)路徑, 為空則不填充, 默認(rèn)屬性為黑色不透明
// 填充路徑時(shí)所使用的填充規(guī)則
@property(copy) NSString *fillRule;
// 外邊框顏色 - 支持隱式動(dòng)畫
@property(nullable) CGColorRef strokeColor;
// 這些值定義了此次被用于繪畫的輪廓路徑(區(qū)域范圍)
這些值的范圍必須是[0腕让,1]之間包含0和1這些在0和1之間的值會(huì)沿著路徑的輪廓被線性的插入進(jìn)去 (支持隱式動(dòng)畫)
@property CGFloat strokeStart; // 路徑起點(diǎn)
@property CGFloat strokeEnd; // 結(jié)束位置
@property CGFloat lineWidth; // 填充路徑的線寬 ,默認(rèn)為1(支持隱式動(dòng)畫)
// 路徑被填充的斜切角限制 默認(rèn)為10(支持隱式動(dòng)畫)
@property CGFloat miterLimit;
// 線兩頭樣式 方形/圓形/ 默認(rèn)為
@property(copy) NSString *lineCap;
// 拐角樣式 選項(xiàng)為: `miter',`round'and`bevel'.Defaults to`miter'
斜切角/ 圓角/ 斜角 默認(rèn)為 切角
@property(copy) NSString *lineJoin;
// 線樣式顯示為虛線
@property CGFloat lineDashPhase;
// 虛線模式 文檔是這樣寫的
The dash pattern (an array of NSNumbers) applied when creating the
*stroked version of the path. Defaults to nil
@property(nullable, copy) NSArray<NSNumber *> *lineDashPattern;
例子:
#define PROGREESS_WIDTH 150 //圓直徑
#define PROGRESS_LINE_WIDTH 6 //弧線的寬度
CAShapeLayer *trackLayer = [CAShapeLayer layer];//創(chuàng)建一個(gè)track shape layer
trackLayer.frame = self.bounds;
[self.layer addSublayer:_trackLayer];
trackLayer.fillColor = [[UIColor clearColor] CGColor];
trackLayer.strokeColor = [[UIColor lightGrayColor] CGColor];//指定path的渲染顏色
trackLayer.opacity = 0.25; // 設(shè)置自己的透明度
trackLayer.lineCap = kCALineCapRound; //指定線的邊緣是圓的
trackLayer.lineWidth = 5;//線的寬度
UIBezierPath *path = [UIBezierPath bezierPathWithArcCenter:CGPointMake(40, 40) radius:(PROGREESS_WIDTH-PROGRESS_LINE_WIDTH)/2 startAngle:degreesToRadians(-270) endAngle:degreesToRadians(30) clockwise:YES];//上面說(shuō)明過(guò)了用來(lái)構(gòu)建圓形
trackLayer.path =[path CGPath]; //把path傳遞給layer枕稀,然后layer會(huì)處理相應(yīng)的渲染嗦明,整個(gè)邏輯和CoreGraph是一致的果港。
CAGradientLayer 屬性
// 定義每個(gè)漸變顏色的CGColorRef對(duì)象數(shù)組
@property(nullable, copy) NSArray *colors;
// 定義每個(gè)漸變對(duì)象漸變的位置區(qū)域,并且每個(gè)漸變對(duì)象的的值都在 [0 , 1]之間的NSNumber對(duì)象數(shù)組,而且每添加一個(gè)新的lacation位置區(qū)域?qū)ο? 對(duì)它所賦予的值都是呈單調(diào)增加的
@property(nullable, copy) NSArray<NSNumber *> *locations;
// 被畫入父Layer的空間位置的起始點(diǎn)和終點(diǎn)
@property CGPoint startPoint;
@property CGPoint endPoint;
// 設(shè)置類型之后,此種漸變將會(huì)被繪制, 目前僅支持 axial 漸變類型(默認(rèn)值)
@property(copy) NSString *type;
#使用示例
CAGradientLayer *gradientLayer = [CAGradientLayer layer];
gradientLayer.frame = CGRectMake(0, 0, self.frame.size.width/2, self.frame.size.height);
[gradientLayer setColors:[NSArray arrayWithObjects:(id)[[UIColor redColor] CGColor],(id)[[UIColor blueColor] CGColor], nil]]; // 設(shè)置顏色,系統(tǒng)自動(dòng)轉(zhuǎn)換為CGColorRef 對(duì)象
[gradientLayer setLocations:@[@0.5,@0.9,@1 ]]; //每個(gè)漸變的區(qū)間范圍
[gradientLayer setStartPoint:CGPointMake(1, 1)]; // 起始點(diǎn)
[gradientLayer setEndPoint:CGPointMake(5, 5)]; // 終點(diǎn)
[self.layer addSublayer:gradientLayer1];
PS: 記錄一下,剛剛開(kāi)始研究您旁。 有不對(duì)的地方望指正蛔六。