CAShapLayer的使用1
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的更多相关文章
- 使用uibesizerpath + Cashaplayer画椭圆
使用uibesizerpath Cashaplayer画椭圆: + (void)drawOvalAnimSourceView:(UIView *)sourceView { //view是曲线的背景vi ...
- IOS-使用CAShapLayer绘制扇形
IOS-使用CAShapLayer绘制扇形 为了增加应用体验感,我们动态绘制扇形或者饼状图效果. 这里我们使用CAShapeLayer,这样就不必再-(void)draw函数内绘制图形 参考代码 -( ...
- iOS-Core-Animation-Advanced-Techniques/13-高效绘图 【没理解】
#import "DrawingView.h" #import <QuartzCore/QuartzCore.h> @interface DrawingView () ...
随机推荐
- BUG-‘Tokenizer’ object has no attribute ‘oov_token’
使用keras包实现NLP问题时,报错 /lib/python3./dist-packages/keras/preprocessing/text.py”, line , in texts_to_seq ...
- eclipse JVM 性能调优
最近因项目存在内存泄漏,故进行大规模的JVM性能调优 , 现把经验做一记录. 一.JVM内存模型及垃圾收集算法 1.根据Java虚拟机规范,JVM将内存划分为: New(年轻代) Tenured(年老 ...
- 爬虫四大金刚:requests,selenium,BeautifulSoup,Scrapy
一.简介爬虫 1.什么是爬虫 #1.什么是互联网? 互联网是由网络设备(网线,路由器,交换机,防火墙等等)和一台台计算机连接而成,像一张网一样. #2.互联网建立的目的? 互联网的核心价值在于数据的共 ...
- 从redis中取值如果不存在设置值,使用Redisson分布式锁【我】
用到的jar包: <!-- Redis客户端 --> <dependency> <groupId>redis.clients</groupId> < ...
- 07--STL序列容器(Array)
一:Array了解 array<T,N> 模板定义了一种相当于标准数组的容器类型.它是一个有 N 个 T 类型元素的固定序列.除了需要指定元素的类型和个数之外,它和常规数组没有太大的差别. ...
- 如何解决Java警告信息:"objc[31336]: Class JavaLaunchHelper is implemented in both places ..."
在macOS High Sierra Version 10.13.6下使用Intellij在Java 8上执行Java程序,console中会打印如下警告信息: objc[31336]: Class ...
- 一秒钟带你走进P图世界-----(python)PIL库的使用
python-----PIL库的使用 一.什么是PIL库 1.PIL(Python Image Library)库是python语言的第三方库,具有强大的图像处理能力,不仅包含了丰富的像素.色彩操作功 ...
- CTR预估中GBDT与LR融合方案(转载)
1.背景 CTR预估,广告点击率(Click-Through Rate Prediction)是互联网计算广告中的关键环节,预估准确性直接影响公司广告收入.CTR预估中用的最多的模型是LR(Logis ...
- IIS中报错弹出调试,系统日志-错误应用程序名称: w3wp.exe,版本: 8.5.9600.16384,时间戳: 0x5215df96(360主机卫士)
偶遇一次特殊情况,在使用Web系统导入数据模版(excel)时,服务端IIS会报错并弹出调试框,然后整个网站都处于卡死的debug状态,如果点否不进行调试,则IIS会中断调试,Web系统继续执行,运行 ...
- git的操作集合
一.git 操作 $ git branch -a //查看远程分支$ git branch //查看本地分支 $ git branch -d <BranchName>//删除本地分支$ g ...