iOS- CAShapeLayer与贝塞尔曲线初识
来源:互联网 发布:织梦cms模板 编辑:程序博客网 时间:2024/06/06 16:32
当我们要自己画一个圆或者说是按百分比显示圆的动画时,CAShapeLayer是非常有用的,因为这是一个基于CoreAnimation框架的类,动画渲染是直接由CPU渲染的。一般来说,他与贝塞尔曲线的结合使用比较常见。废话不多说,直接代码,浅讲一下他的用法。
//// CircleView.h// 圆形进度条Demo//// Created by 程磊 on 15/4/28.// Copyright (c) 2015年 程磊. All rights reserved.//#import <UIKit/UIKit.h>@interface CircleView : UIView/** * 起始值 */@property (nonatomic, assign) CGFloat startValue;//起始值(0~1)/** * 线宽 */@property (nonatomic, assign) CGFloat lineWidth;//线宽(>0)/** * 线条颜色 */@property (nonatomic, strong) UIColor *lineColor;//线条颜色/** * 变化值 */@property (nonatomic, assign) CGFloat value;//变化值@end
//// CircleView.m// 圆形进度条Demo//// Created by 程磊 on 15/4/28.// Copyright (c) 2015年 程磊. All rights reserved.//#import "CircleView.h"@interface CircleView ()@property (nonatomic, strong) CAShapeLayer *shapeLayer;@end@implementation CircleView- (instancetype)initWithFrame:(CGRect)frame{ if (self = [super initWithFrame:frame]) { _shapeLayer = [CAShapeLayer layer];//初始化一个CAShapeLayer _shapeLayer.frame = self.bounds;//其frame //贝塞尔曲线 UIBezierPath *path = [UIBezierPath bezierPathWithOvalInRect:self.bounds];//初始化一个用WithOvalInrect,这个frame与上边的frame无关 _shapeLayer.path = path.CGPath;//将贝塞尔曲线与其相关联起来 _shapeLayer.fillColor = [UIColor clearColor].CGColor;//所围成的图形填充颜色 _shapeLayer.lineWidth = 1;//边界线宽度 _shapeLayer.strokeStart = 0.f;//起始点 _shapeLayer.strokeColor = [UIColor redColor].CGColor;//边界线颜色 _shapeLayer.strokeEnd = 0.f;//终结点 [self.layer addSublayer:_shapeLayer]; } return self;}@synthesize startValue = _startValue;- (void)setStartValue:(CGFloat)startValue { _startValue = startValue; _shapeLayer.strokeStart = startValue;}- (CGFloat)startValue{ return _startValue;}@synthesize lineWidth = _lineWidth;- (void)setLineWidth:(CGFloat)lineWidth{ _lineWidth = lineWidth; _shapeLayer.lineWidth = lineWidth;}- (CGFloat)lineWidth{ return _lineWidth;}@synthesize lineColor = _lineColor;- (void)setLineColor:(UIColor *)lineColor{ _lineColor = lineColor; _shapeLayer.strokeColor = lineColor.CGColor;}- (UIColor *)lineColor{ return _lineColor;}@synthesize value = _value;- (void)setValue:(CGFloat)value{ _value = value; _shapeLayer.strokeEnd = value;}- (CGFloat)value{ return _value;}@end
//// ViewController.m// 圆形进度条Demo//// Created by 程磊 on 15/4/28.// Copyright (c) 2015年 程磊. All rights reserved.//#import "ViewController.h"#import "CircleView.h"@interface ViewController ()@property (nonatomic, assign) double percent;@property (nonatomic, strong) NSTimer *timer;@property (nonatomic, strong) CircleView *circle;@end@implementation ViewController- (void)viewDidLoad { [super viewDidLoad]; _percent = 0; _circle = [[CircleView alloc] initWithFrame:CGRectMake(0, 0, 200, 200)]; _circle.center = self.view.center; _circle.startValue = 0.f; _circle.lineWidth = 5; _circle.lineColor = [UIColor greenColor]; [self.view addSubview:_circle]; _timer = [NSTimer scheduledTimerWithTimeInterval:0.1 target:self selector:@selector(circleAnimation) userInfo:nil repeats:YES];}- (void)circleAnimation{ _percent += 0.01; _circle.value = _percent; if (_percent >= 1.0) { _percent = 0; }}@end
0 0
- iOS- CAShapeLayer与贝塞尔曲线初识
- 贝塞尔曲线与CAShapeLayer
- CAShapeLayer和贝塞尔曲线
- iOS 贝塞尔曲线和CAShapeLayer 结合使用的进度条详解
- 贝塞尔曲线与CAShapeLayer的关系以及Stroke动画
- 贝塞尔曲线收录:三 CAShapeLayer
- iOS开发中的基于CAShapeLayer和贝塞尔曲线的圆形进度条动画
- 使用CAShapeLayer和贝塞尔曲线绘制进度条
- CAShapeLayer和贝塞尔曲线-Mask动画
- 贝塞尔曲线 & CAShapeLayer & Stroke 动画 浅谈
- 贝塞尔曲线&CAShapeLayer超炫动画
- IOS - CAShapeLayer
- iOS CAShapeLayer
- IOS开发—CAShapeLayer与CAGradientLayer
- IOS-CAShapeLayer与UIBezierPath的基本用法
- 基于CAShapeLayer和贝塞尔曲线的圆形进度条动画【原创】
- 基于CAShapeLayer和贝塞尔曲线的圆形进度条动画
- 基于CAShapeLayer和贝塞尔曲线的圆形进度条动画
- 浅谈JAVA中如何利用socket进行网络编程(一)
- codeforces 292E. Copying Data
- Java结合docx4j生成docx文件
- DWR初识
- C++类和接口的设计原则探讨
- iOS- CAShapeLayer与贝塞尔曲线初识
- PHP使用外部命令导出数据库,备份到服务器并下载到本地
- 最大流的算法(EK算法)—>Edmonds-Karp算法(最短路径增广算法)
- 黑马程序员--java基础--关键字this和super
- 99乘法表四个方向
- Oracle 11g ASM Command Enhancement
- Android WebView 禁止输入
- eclipse快捷键
- MFC中char*,string和CString之间的转换(转)