贝塞尔曲线与CAShapeLayer
来源:互联网 发布:淘宝支持微信付款吗 编辑:程序博客网 时间:2024/05/31 18:52
这些天,一直在研究一些基本动效。其中CAShapeLayer和贝塞尔曲线配合使用,功能很强大,遂,今天总结了一些它们的用法,如下:
贝塞尔曲线与CAShapeLayer的关系
1,CAShapeLayer中shape代表形状的意思,所以需要形状才能生效
2,贝塞尔曲线可以创建基于矢量的路径
3,贝塞尔曲线给CAShapeLayer提供路径,CAShapeLayer在提供的路径中进行渲染。路径会闭环,所以绘制出了Shape
4,用于CAShapeLayer的贝塞尔曲线作为Path,其path是一个首尾相接的闭环的曲线,即使该贝塞尔曲线不是一个闭环的曲线
CAShapeLayer:CAShapeLayer继承自CALayer,注意: 做动效,CAShapeLayer和贝塞尔曲线 更配哦.
- 它依附于一个给定的path,必须给与path,而且,即使path不完整也会自动首尾相接
- strokeStart以及strokeEnd代表着在这个path中所占用的百分比,[0 , 1],0代表Path的开始位置,1代表Path的结束位置
- CAShapeLayer动画仅仅限于沿着边缘的动画效果,它实现不了填充效果 4.CAShapeLayer属于CoreAnimation框架,通过GPU来渲染图形,节省性能。动画渲染直接提交给手机GPU,不消耗内存,DrawRect属于CoreGraphic框架,占用CPU,消耗性能大
贝塞尔曲线:
//根据一个矩形画曲线
(UIBezierPath *)bezierPathWithRect:(CGRect)rect
//根据矩形框的内切圆画曲线
(UIBezierPath *)bezierPathWithOvalInRect:(CGRect)rect
//根据矩形画带圆角的曲线
(UIBezierPath *)bezierPathWithRoundedRect:(CGRect)rect cornerRadius:(CGFloat)cornerRadius
//在矩形中,可以针对四角中的某个角加圆角 参数: corners:枚举值,可以选择某个角 cornerRadii:圆角的大小
(UIBezierPath *)bezierPathWithRoundedRect:(CGRect)rect byRoundingCorners:(UIRectCorner)corners cornerRadii:(CGSize)cornerRadii
//以某个中心点画弧线 参数: center:弧线中心点的坐标 radius:弧线所在圆的半径 startAngle:弧线开始的角度值 endAngle:弧线结束的角度值 clockwise:是否顺时针画弧线
(UIBezierPath *)bezierPathWithArcCenter:(CGPoint)center radius:(CGFloat)radius startAngle:(CGFloat)startAngle endAngle:(CGFloat)endAngle clockwise:(BOOL)clockwise;
//画二元曲线,一般和moveToPoint配合使用 参数: endPoint:曲线的终点 controlPoint:画曲线的基准点
- (void)addQuadCurveToPoint:(CGPoint)endPoint controlPoint:(CGPoint)controlPoint
//以三个点画一段曲线,一般和moveToPoint配合使用 参数: endPoint:曲线的终点 controlPoint1:画曲线的第一个基准点 controlPoint2:画曲线的第二个基准点
- (void)addCurveToPoint:(CGPoint)endPoint controlPoint1:(CGPoint)controlPoint1 controlPoint2:(CGPoint)controlPoint2
// 贝塞尔曲线(创建一个圆)
UIBezierPath bezierPath = [UIBezierPath bezierPathWithArcCenter:CGPointMake(100 / 2.f, 100 / 2.f) radius:100 / 2.f startAngle:0 endAngle:M_PI 2 clockwise:YES];
// 创建一个shapeLayer
CAShapeLayer *layer = [CAShapeLayer layer];
layer.frame = showView.bounds; // 与showView的frame一致
layer.strokeColor = [UIColor greenColor].CGColor; // 边缘线的颜色
layer.fillColor = [UIColor clearColor].CGColor; // 闭环填充的颜色
layer.lineCap = kCALineCapSquare; // 边缘线的类型
layer.path = bezierPath.CGPath; // 从贝塞尔曲线获取到形状
layer.lineWidth = 4.0f; // 线条宽度
layer.strokeStart = 0.0f; layer.strokeEnd = 0.1f;
- 贝塞尔曲线与CAShapeLayer
- iOS- CAShapeLayer与贝塞尔曲线初识
- CAShapeLayer和贝塞尔曲线
- 贝塞尔曲线与CAShapeLayer的关系以及Stroke动画
- 贝塞尔曲线收录:三 CAShapeLayer
- 使用CAShapeLayer和贝塞尔曲线绘制进度条
- CAShapeLayer和贝塞尔曲线-Mask动画
- 贝塞尔曲线 & CAShapeLayer & Stroke 动画 浅谈
- 贝塞尔曲线&CAShapeLayer超炫动画
- 基于CAShapeLayer和贝塞尔曲线的圆形进度条动画【原创】
- 基于CAShapeLayer和贝塞尔曲线的圆形进度条动画
- 基于CAShapeLayer和贝塞尔曲线的圆形进度条动画
- 基于CAShapeLayer和贝塞尔曲线的圆形进度条动画【原创】
- 基于CAShapeLayer和贝塞尔曲线的圆形进度条动画【转载】
- iOS 贝塞尔曲线和CAShapeLayer 结合使用的进度条详解
- iOS开发中的基于CAShapeLayer和贝塞尔曲线的圆形进度条动画
- 贝塞尔曲线收录:一关于CAShapeLayer的一些实用案例和技巧
- CAShapeLayer的属性 path, 配合上 UIBezierPath(贝塞尔曲线)使用
- Oracle取TOP N条记录
- [重写开源框架源码]HorizontalListView的滑动冲突解决
- Android中attrs.xml文件的使用详解
- SSH学习之Struts1入门的简单登陆案例。
- 在AI中如何合理的处理图像{太原UI设计师}讲
- 贝塞尔曲线与CAShapeLayer
- Struts2 doubleselect标签的使用
- FlowLayout
- JSON调试找不到 net.sf.ezmorph.Morpher与org/apache/commons/collections/map/ListOrderedMap这个异常。
- Mac OS X上删除“.svn”文件
- iOS开发——model类模板(过滤null和ID)
- [转]Android PopupWindow的使用和分析
- 编写高质量前端代码
- 计算机视觉的测试数据及源码站点