CoreAnimation----CAShapeLayer

CoreAnimation----CAShapeLayer


大美女
大美女

先說說使用CAShapeLayer的優(yōu)點(diǎn): GPU執(zhí)行, GPU執(zhí)行, GPU執(zhí)行

CAShapeLayer

1. CAShapeLayer的優(yōu)點(diǎn)

  • 渲染迅速,硬件加速GPU執(zhí)行 。
  • 內(nèi)存利用率高,不需要寄宿圖,所以比CALayer的內(nèi)存占用還低。 。
  • 圖層邊界不會(huì)被裁減掉,CAShapeLayer可在邊界外進(jìn)行繪制
  • 不會(huì) 像素化

2. 使用CGPath

  1. CAShapeLayer可繪制所有通過CGPath表示的形狀
  2. 這個(gè)形狀不一定要閉合
  3. 可控制屬性如:lineWidth(線寬),lineCap(線條結(jié)尾的樣式),lineJoin(線條之間結(jié)合點(diǎn)的樣式)

使用CAShapeLayer畫“火柴人”:

- (void)viewDidLoad {

 [super  viewDidLoad];

  UIBezierPath *path = [UIBezierPath  bezierPath];

 [path moveToPoint:CGPointMake(175, 100)];

 [path addArcWithCenter:CGPointMake(150, 100) radius:25  startAngle:0  endAngle:M_PI * 2  clockwise:YES];

 [path moveToPoint:CGPointMake(150, 125)];

 [path addLineToPoint:CGPointMake(150, 175)];

 [path addLineToPoint:CGPointMake(125, 225)];

 [path moveToPoint:CGPointMake(150, 175)];

 [path addLineToPoint:CGPointMake(175, 225)];

 [path moveToPoint:CGPointMake(100, 150)];

 [path addLineToPoint:CGPointMake(200, 150)];

  CAShapeLayer *shapeLayer = [CAShapeLayer  layer];

 shapeLayer.strokeColor = [UIColor  redColor].CGColor;

 shapeLayer.fillColor = [UIColor  clearColor].CGColor;

 shapeLayer.lineWidth = 5.0f;

 shapeLayer.lineJoin = @"round";

 shapeLayer.lineCap = @"round";

 shapeLayer.path = path.CGPath;

 [self.view.layer addSublayer:shapeLayer];

  NSLog(@"-------viewDidlod-------");

}

3. 圓角

  • 除了設(shè)置CALayer的cornerRadius,還可以單獨(dú)設(shè)置一個(gè)角的圓角
    設(shè)置矩形的三個(gè)角為圓角
- (void)viewDidLoad {

 [super  viewDidLoad];

 CGRect tect = CGRectMake(50, 50, 100, 100);

 CGSize radii = CGSizeMake(20, 20);

  UIRectCorner corner = UIRectCornerTopRight | UIRectCornerBottomLeft | UIRectCornerBottomRight;

  UIBezierPath *path = [UIBezierPath  bezierPathWithRoundedRect:tect byRoundingCorners:corner cornerRadii:radii];

  CAShapeLayer *shapeLayer = [CAShapeLayer  layer];

 shapeLayer.path = path.CGPath;

 [self.view.layer addSublayer:shapeLayer];

  NSLog(@"-------viewDidlod-------");

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

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

  • 每個(gè)UIView有一個(gè)伙伴稱為layer,一個(gè)CALayer。UIView實(shí)際上并沒有把自己畫到屏幕上;它繪制本身...
    shenzhenboy閱讀 3,257評論 0 17
  • 復(fù)雜的組織都是專門化的Catharine R. Stimpson 到目前為止,我們已經(jīng)探討過CALayer類了,同...
    雪_晟閱讀 533評論 0 0
  • 一、CAShapelayer 我們知道可以不使用圖片情況下利用CGpath去構(gòu)建任意形狀的陰影。其實(shí)我們也可...
    小貓仔閱讀 1,822評論 0 5
  • 我已經(jīng)忘記今年的一月我在干嘛。然后又是說好要好好寫作業(yè)看書寒假,然后是一模。大概從那個(gè)時(shí)候開始努力已經(jīng)沒有用了吧。...
    Cchunnwxyzbd閱讀 282評論 0 0
  • 積極一點(diǎn)點(diǎn),開心一點(diǎn)點(diǎn)。你能不能別憂愁呢?
    歲月靜好_87e9閱讀 206評論 0 0

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