1.添加橙色圆环

- (CAShapeLayer *)shapeLayer {
if (!_shapeLayer) {
_shapeLayer = [CAShapeLayer layer];
CGRect rect = {,,,};
//bezierPathWithOvalInRect圆形路径 bezierPathWithRect 方形路径
UIBezierPath * path = [UIBezierPath bezierPathWithOvalInRect: rect];
_shapeLayer.strokeColor = [UIColor orangeColor].CGColor;
_shapeLayer.lineWidth = ;
_shapeLayer.fillColor = [UIColor clearColor].CGColor;
_shapeLayer.lineCap = kCALineCapRound;
_shapeLayer.path = path.CGPath;
}
return _shapeLayer;
}

2.添加进度条

- (CAShapeLayer *)progressLayer {
if (!_progressLayer) {
_progressLayer = [CAShapeLayer layer];
_progressLayer.frame = self.shapeLayer.bounds;
_progressLayer.fillColor = [UIColor clearColor].CGColor;
_progressLayer.strokeColor = [UIColor whiteColor].CGColor;
_progressLayer.lineWidth = ;
_progressLayer.lineCap = kCALineCapRound;
CGRect rect = {,,,};
UIBezierPath * path = [UIBezierPath bezierPathWithOvalInRect: rect];
_progressLayer.path = path.CGPath;
}
return _progressLayer;
}

3.添加渐变颜色

[self.view.layer addSublayer: self.shapeLayer];
[self.view.layer addSublayer: self.progressLayer]; CAGradientLayer * gradientLayer1 = [CAGradientLayer layer];
gradientLayer1.frame = self.view.bounds; CGColorRef red = [UIColor redColor].CGColor;
CGColorRef purple = [UIColor purpleColor].CGColor;
CGColorRef yellow = [UIColor yellowColor].CGColor;
CGColorRef orange = [UIColor orangeColor].CGColor; gradientLayer1.colors = @[(__bridge id)red,(__bridge id)purple,(__bridge id)yellow,(__bridge id)orange];
gradientLayer1.locations = @[@0.3, @0.6,@0.8,@1.0];
gradientLayer1.startPoint = CGPointMake(0.5, );
gradientLayer1.endPoint = CGPointMake(0.5, ); //一定要设置gradientLayer.mask = self.progressLayer;这样才能显示中间的内容,如果不设置mask,那么就只有渐变图层了
gradientLayer1.mask = self.progressLayer;
[self.view.layer addSublayer: gradientLayer1]; //添加渐变

4.执行动画

- (IBAction)change:(UISlider * )sender {
CGFloat cV = sender.value * ;
[self updateProgressWithNumber: cV]; } - (void)updateProgressWithNumber:(NSUInteger)number {
[CATransaction begin];
[CATransaction setAnimationTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseIn]];
[CATransaction setAnimationDuration:0.5];
self.progressLayer.strokeEnd = number / 100.0;
NSLog(@"%@",[NSString stringWithFormat:@"%@%%", @(number)]);
[CATransaction commit];
}

CAShapLayer的使用1的更多相关文章

  1. 使用uibesizerpath + Cashaplayer画椭圆

    使用uibesizerpath Cashaplayer画椭圆: + (void)drawOvalAnimSourceView:(UIView *)sourceView { //view是曲线的背景vi ...

  2. IOS-使用CAShapLayer绘制扇形

    IOS-使用CAShapLayer绘制扇形 为了增加应用体验感,我们动态绘制扇形或者饼状图效果. 这里我们使用CAShapeLayer,这样就不必再-(void)draw函数内绘制图形 参考代码 -( ...

  3. iOS-Core-Animation-Advanced-Techniques/13-高效绘图 【没理解】

    #import "DrawingView.h" #import <QuartzCore/QuartzCore.h> @interface DrawingView () ...

随机推荐

  1. bzoj4490 随机数生成器Ⅱ加强版

    题目链接 题意 给出参数\(C_1,C_2,P\)按如下方式生成一个长度为\(n \times m\)的序列\(x\): \(x_0 = C_1,x_1=C2\) \(x_i=(x_{i-1}+x_{ ...

  2. Vue(四)组件

    组件的复用 这里的工程和上一节的一样 先建立一个组件 MyButton.vue <template> <button @click="count++">Yo ...

  3. c#调试快捷键

    F5 - 启动调试 Shift + F5 - 停止调试 F9 - 设置断点 Ctrl + Shift + F9 - 删除所有断点 F10 - 逐过程调试 F11 - 逐语句调试 Ctrl+R+E:  ...

  4. Windows系统CMD下常用命令

    命令    功能ASSOC    显示或修改文件扩展名关联.ATTRIB    显示或更改文件属性.BREAK    设置或清除扩展式 CTRL+C 检查.BCDEDIT    设置启动数据库中的属性 ...

  5. apue——无缓冲读写操作

    stdrw.c文件 #include "apue.h" #define BUFFSIZE 4096 #include <stdio.h> int main(int ar ...

  6. uboot中的中断macro宏

    目录 uboot中的中断macro宏 引入 内存分配 流程概览 普通中断 保存现场 中断函数打印具体寄存器 恢复现场 软中断 空间获取 保存现场 附录速记 疑惑待解 title: uboot中的中断m ...

  7. Apache Hadoop 2.9.2 的YARN High Available 模式部署

    Apache Hadoop 2.9.2 的YARN High Available 模式部署 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.环境准备 1>.官方文档(htt ...

  8. 1.8分布式集群模式基础(VM安装多台服务器)

    前言 一晃就是10几天,学习的过程是断断续续的,对个人来说,这并不是一个良好的状态.在这10几天了,迷恋起了PS... 从今天起,坚持一周4篇,额.希望吧 在之前的随笔中,我安装了Xshell 和 C ...

  9. kettle 分组

    kettle 分组组可以实现group_concat的效果

  10. Python3:输出当前目录所有目录和文件--walk()函数

    有了前一篇文章的介绍,再输出目录,也不过是多写一个函数的事情了,我把它封装成了类~~ 发现walk()真的是一个超级方便好用的函数.这种情况下用listdir()是搞定不了的啦 import os c ...