IOS Animation-贝塞尔曲线与Layer简单篇

swift篇

1.介绍

贝塞尔曲线:

  贝塞尔曲线是计算机图形图像造型的基本工具,是图形造型运用得最多的基本线条之一。它通过控制曲线上的四个点(起始点、终止点以及两个相互分离的中间点)来创造、编辑图形。

  一般的矢量图形软件通过它来精确画出曲线,贝兹曲线由线段与节点组成,节点是可拖动的支点,线段像可伸缩的皮筋,我们在绘图工具上看到的钢笔工具就是来做这种矢量曲线的。

Layer:

  CALayer(层)是屏幕上的一个矩形区域,在每一个UIView中都包含一个根CALayer,在UIView上的所有视觉效果都是在这个Layer上进行的。Layer有很多种,最常用也是最基本的是CALayer。

  Layer是处理‘绘制’的事情,把它想象成一个画布。View相当于ps中的图片,layer相当于图片view的图层。view是通过layer画出的,view是layer的代理。

2.简单代码编写

1)简单在view上加一层layer。

  1. func addSubLayer() {
  2. let layer = CAShapeLayer();//定义一个layer
  3. layer.frame = CGRectMake(, , , );//坐标
  4. layer.backgroundColor = UIColor.blueColor().CGColor;//CG颜色
  5. self.view.layer.addSublayer(layer);//在view上添加layer
  6. }

2)通过赛贝尔曲线,画一个矩形在layer上面

  1. func addBezierWithRect() {
  2. let layer = CAShapeLayer() //新建layer
  3. let path = UIBezierPath.init(rect: CGRectMake(, , , )) //初始化bezier曲线--矩形
  4. layer.path = path.CGPath //在layer上赋予曲线的路径
  5. layer.fillColor = UIColor.clearColor().CGColor //layer的填充颜色
  6. layer.strokeColor = UIColor.blueColor().CGColor //layer的边框颜色
  7. self.view.layer.addSublayer(layer) //添加layer
  8. }

3)画一个圆角的矩形

  1. func addBezierWithRoundRect() {
  2. let layer = CAShapeLayer()
  3. let path = UIBezierPath.init(roundedRect: CGRectMake(, , , ), cornerRadius: ) //定义圆角矩形
  4. layer.path = path.CGPath
  5. layer.fillColor = UIColor.clearColor().CGColor
  6. layer.strokeColor = UIColor.redColor().CGColor
  7. self.view.layer.addSublayer(layer)
  8. }

4)画一个圆形

  1. func addBezierWithCircular() {
  2. let layer = CAShapeLayer()
  3. let circularPath = UIBezierPath(arcCenter: CGPoint.init(x: ,y: ), radius: , startAngle: , endAngle: CGFloat(*M_PI), clockwise: true)//定义一个圆形
  4. layer.path = circularPath.CGPath
  5. layer.fillColor = UIColor.clearColor().CGColor
  6. layer.strokeColor = UIColor.greenColor().CGColor
  7.  
  8. self.view.layer.addSublayer(layer)
  9. }

5)画一条曲线

  1. func addBezierWithCurve() {
  2. let startPoint = CGPoint(x: , y: )//曲线开始位置
  3. let endPoint = CGPoint(x: , y: )//曲线终点位置
  4. let controlPoint = CGPoint(x: , y: )//曲线中间位置
  5.  
  6. let layer = CAShapeLayer()
  7. let quxianPath = UIBezierPath()
  8. quxianPath.moveToPoint(startPoint) //首先移动到初始点
  9. quxianPath.addQuadCurveToPoint(endPoint, controlPoint: controlPoint) //定义终点点和中间点
  10. layer.path = quxianPath.CGPath
  11. layer.fillColor = UIColor.clearColor().CGColor
  12. layer.strokeColor = UIColor.greenColor().CGColor
  13. self.view.layer.addSublayer(layer)
  14. }

如果想结合动画来用,可以看文章:CAShapeLayer、UIBezierPath与Animation的结合

可以关注本人的公众号,多年经验的原创文章共享给大家。

IOS Animation-贝塞尔曲线与Layer简单篇(一)的更多相关文章

  1. iOS开发 贝塞尔曲线

    iOS开发 贝塞尔曲线UIBezierPath - 陌云 时间 2014-03-14 11:04:00  博客园-所有随笔区 原文  http://www.cnblogs.com/moyunmo/p/ ...

  2. iOS 使用贝塞尔曲线绘制路径

    使用贝塞尔曲线绘制路径 大多数时候,我们在开发中使用的控件的边框是矩形,或者做一点圆角,是使得矩形的角看起来更加的圆滑. 但是如果我们想要一个不规则的图形怎么办?有人说,叫UI妹子做,不仅省事,还可以 ...

  3. iOS开发 贝塞尔曲线UIBezierPath

    最近项目中需要用到用贝塞尔曲线去绘制路径 ,然后往路径里面填充图片,找到这篇文章挺好,记录下来 自己学习! 转至 http://blog.csdn.net/guo_hongjun1611/articl ...

  4. Android - Animation 贝塞尔曲线之美

    概述 贝塞尔曲线于1962,由法国工程师皮埃尔·贝塞尔所广泛发表,他运用贝塞尔曲线来为汽车的主体进行设计.贝塞尔曲线最初由Paul de Casteljau于1959年运用de Casteljau演算 ...

  5. iOS开发 贝塞尔曲线UIBezierPath(2)

    使用CAShapeLayer与UIBezierPath可以实现不在view的drawRect方法中就画出一些想要的图形 . 1:UIBezierPath: UIBezierPath是在 UIKit 中 ...

  6. iOS:使用贝塞尔曲线绘制图表(折线图、柱状图、饼状图)

    1.介绍: UIBezierPath :画贝塞尔曲线的path类 UIBezierPath定义 : 贝赛尔曲线的每一个顶点都有两个控制点,用于控制在该顶点两侧的曲线的弧度. 曲线的定义有四个点:起始点 ...

  7. iOS开发 贝塞尔曲线UIBezierPath(后记)

    使用CAShapeLayer与UIBezierPath可以实现不在view的drawRect方法中就画出一些想要的图形 . 1:UIBezierPath: UIBezierPath是在 UIKit 中 ...

  8. iOS开发——UI精选OC篇&UIApplication,UIWindow,UIViewController,UIView(layer)简单介绍

    UIApplication,UIWindow,UIViewController,UIView(layer)简单介绍 一:UIApplication:单例(关于单例后面的文章中会详细介绍,你现在只要知道 ...

  9. iOS开发之画图板(贝塞尔曲线)

    贝塞尔曲线,听着挺牛气一词,不过下面我们在做画图板的时候就用到贝塞尔绘直线,没用到绘制曲线的功能.如果会点PS的小伙伴会对贝塞尔曲线有更直观的理解.这篇博文的重点不在于如何用使用贝塞尔曲线,而是利用贝 ...

随机推荐

  1. android图片的scaleType属性

    scaleType 保持图片原有大小 scaleType="fitXY"填满盒子 scaleType="fitStart"保持纵横比缩放放在左上角 scaleT ...

  2. mybatis框架中分页的实现

    2.分页的实现? 分页的时候考虑的问题: 分页的大小,分页的索引. 比如:分页的大小为10,分页的起始索引为1(索引从1开始) 第一页:1到10.    起始行号: (页的索引-1)*分页大小+1 结 ...

  3. pl/sql中文乱码问题解决

    最近用pl/sql连我们公司的数据库,发现表里的中文数据都是“???”,上网查了一下,发现是数据库的编码格式和pl/sql的编码格式不统一造成的. 解决方法非常简单,只要创建一个系统环境变量:NLS_ ...

  4. yaf框架学习笔记

    1.yaf框架支持简单的试图引擎,并且支持用户自定义视图引擎,比如smarty. 2.Yaf_Request_Http::getQuery  ,Yaf_Request_Http::getQuery ( ...

  5. css js 的引入方式和书写位置

    css 的引入方式 1.行内样式 <div id="div1" style="width:100px; height:100px; background:red&q ...

  6. textarea 在浏览器中固定大小和禁止拖动

    HTML 标签 textarea 在大部分浏览器中只要指定行(rows)和列(cols)属性,就可以规定 textarea 的尺寸,大小就不会改变,不过更好的办法是使用 CSS 的 height 和 ...

  7. tmpfs介绍

    tmpfs 前几天发现服务器的内存(ram)和swap使用率非常低,于是就想这么多的资源不用岂不浪费了?google了一下,认识了tmpfs,总的来说tmpfs是一种虚拟内存文件系统正如这个定义它最大 ...

  8. shell选择语句

    if语句 1) if ... else 语句 if ... else 语句的语法: if [ expression ] then Statement(s) to be executed if expr ...

  9. runtime记录

    前言: 最初对于runtime的了解其实只停留在,知道这是一组C的方法,知道消息机制中会把方法调用转成objc_msgSend(theObject,@selector(objectMethod)).随 ...

  10. 对于新安装的MySQL如何提升MySQL的安全级别

    一 作为最流行的开源数据库引擎,MySQL本身是非常安全的.即便如此,你仍然需要添加额外的安全层来保护你的MySQL数据库不受攻击,毕竟任何经营网上在线业务的人都不想冒数据库受到损坏的风险.接下来,我 ...