zoukankan      html  css  js  c++  java
  • IOS Animation-贝塞尔曲线与Layer简单篇(一)

    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(100, 100, 150, 150);//坐标
    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(50, 80, 200, 100)) //初始化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(100, 200, 150, 100), cornerRadius: 20) //定义圆角矩形
     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: 200,y: 300), radius: 50, startAngle: 0, endAngle: CGFloat(2*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: 20, y: 200)//曲线开始位置
     3         let endPoint = CGPoint(x: 200, y: 200)//曲线终点位置
     4         let controlPoint = CGPoint(x: 50, y: 300)//曲线中间位置
     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的结合

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

  • 相关阅读:
    SQLDirect 6.5 Source (Delphi 5-10.1 Berlin)
    中国自主X86处理器工艺跃进:国产28nm升级16nm(上海兆芯)
    底层库
    An Overview of Complex Event Processing2
    linux动态库编译和使用
    gulp
    Web前端性能优化
    ECLIPSE JSP TOMCAT 环境搭建
    项目架构mvc+webapi
    HTTP/1.1
  • 原文地址:https://www.cnblogs.com/alunchen/p/5297488.html
Copyright © 2011-2022 走看看