alun-chen

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

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的结合

 

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

posted on 2016-03-20 12:42  alun-chen  阅读(2546)  评论(0编辑  收藏  举报