CAGradientLayer
参考:
CAShapeLayer和CAGradientLayer
一 简介
1,CAGradientLayer,处理颜色渐变;
2,CAGradientLayer的渐变色可以做隐式动画;
3,大部分情况下,CAGradientLayer都是与CAShapeLayer配合使用的。
CAShapeLayer提供形状,CAGradientLayer做背景。一般,CAShaperLayer作为CAGradientLayer的遮照——mask来用————CAGradientLayer作为背景使用;
4,CAGradientLayer可以用作png遮照效果。
eg:3
// 创建形状遮罩 self.circleLayer = [CAShapeLayer LayerWithCircleCenter:CGPointMake(82, 82) radius:80 startAngle:DEGREES(0) endAngle:DEGREES(360) clockwise:YES lineDashPattern:@[@10, @10]]; self.circleLayer.strokeColor = [UIColor blackColor].CGColor; // 边缘线的颜色 self.circleLayer.lineCap = kCALineCapSquare; // 边缘线的类型 self.circleLayer.lineWidth = 4.f; // 线条宽度 self.circleLayer.strokeStart = 0.0f; self.circleLayer.strokeEnd = 1.0f; // CAShapeLayer *circleLayer; // 创建渐变图层 self.faucet = [CAGradientLayer layer]; // CAGradientLayer *faucet; self.faucet.frame = CGRectMake(0, 0, 200, 200); self.faucet.position = self.view.center; // 以CAShapeLayer的形状作为遮罩是实现特定颜色渐变的关键 self.faucet.mask = self.circleLayer; self.faucet.colors = @[(id)[UIColor greenColor].CGColor, (id)[UIColor redColor].CGColor, (id)[UIColor cyanColor].CGColor, (id)[UIColor purpleColor].CGColor, (id)[UIColor yellowColor].CGColor]; // 设定动画时间 self.faucet.speed = 0.5f; // 添加到系统图层中 [self.view.layer addSublayer:self.faucet]; // 创建定时器 NSTimer *timer; self.timer = [NSTimer scheduledTimerWithTimeInterval:1.f target:self selector:@selector(timerEvent) userInfo:nil repeats:YES]; }
二 坐标系统
1,CAGradientLayer的坐标系统是从坐标(0,0)到(1,1)绘制的矩形;
2,CAGradientLayer的frame值的size不为正方形的话,坐标系统会被拉伸;
3,CAGradientLayer的startPoint与endPoint会直接影响颜色的绘制方向;
4,CAGradientLayer的颜色分割点是以0到1的比例来计算的;
三 色差动画实现
1,确定渐变色渐变方向;
2,设定两种颜色,其中一种透明色,另外一种是自定义颜色;
3,设定好location的颜色分割点值;
4,CAGradientLayer的颜色分割点是以0到1的比例来计算的。
四 用CAGradientLayer封装色差动画的view
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!