Swift CAShapeLayer,UIBezierPath绘制图形

1、绘制矩形

//利用CAShapeLayer绘图一个简单的矩形
        let layer=CAShapeLayer()
        layer.frame=CGRectMake(110,100,150,100)
        layer.backgroundColor=UIColor.blackColor().CGColor
        view.layer.addSublayer(layer)

        //利用UIBezierPath绘制简单的矩形
        let path=UIBezierPath(rect: CGRectMake(110,100))
        let layer=CAShapeLayer()
        layer.path=path.CGPath
        //填充颜色
        layer.fillColor=UIColor.blackColor().CGColor
        //边框颜色
        layer.strokeColor=UIColor.redColor().CGColor
        view.layer.addSublayer(layer)

2、绘制圆形

let path=UIBezierPath(roundedRect: CGRectMake(100,50,100),cornerRadius: 50)
        let layer=CAShapeLayer()
        layer.path=path.CGPath
        layer.fillColor=UIColor.blackColor().CGColor
        layer.strokeColor=UIColor.greenColor().CGColor
        view.layer.addSublayer(layer)

        //制定起始角和半径画圆
        let radius:CGFloat=60.0
        let startAngle:CGFloat=0.0
        let endAngle:CGFloat=CGFloat(M_PI*2)
        let path=UIBezierPath(arcCenter: view.center,radius: radius,startAngle: startAngle,endAngle: endAngle,clockwise: true)
        let layer=CAShapeLayer()
        layer.path=path.CGPath
        layer.fillColor=UIColor.blackColor().CGColor
        layer.strokeColor=UIColor.greenColor().CGColor
        view.layer.addSublayer(layer)

3、画弧

let startPoint=CGPointMake(50,300)
        let endPoint=CGPointMake(300,300)
        let controlPoint=CGPointMake(170,50)

        let layer1=CALayer()
        layer1.frame=CGRectMake(startPoint.x,startPoint.y,5,5)
        layer1.backgroundColor=UIColor.redColor().CGColor

        let layer2=CALayer()
        layer2.frame=CGRectMake(endPoint.x,endPoint.y,5)
        layer2.backgroundColor=UIColor.redColor().CGColor

        let layer3=CALayer()
        layer3.frame=CGRectMake(controlPoint.x,controlPoint.y,5)
        layer3.backgroundColor=UIColor.redColor().CGColor

        let path=UIBezierPath()
        let layer=CAShapeLayer()
        path.movetoPoint(startPoint)
        path.addQuadCurvetoPoint(endPoint,controlPoint: controlPoint)

        layer.path=path.CGPath
        layer.fillColor=UIColor.clearColor().CGColor
        layer.strokeColor=UIColor.blackColor().CGColor

        view.layer.addSublayer(layer)
        view.layer.addSublayer(layer1)
        view.layer.addSublayer(layer2)
        view.layer.addSublayer(layer3)
4、画弧2
 //
        let startPoint=CGPointMake(50,300)
        let controlPoint1=CGPointMake(120,180)
        let controlPoint2=CGPointMake(220,420)

        let layer1=CALayer()
        layer1.frame=CGRectMake(startPoint.x,5)
        layer2.backgroundColor=UIColor.redColor().CGColor

        let layer3=CALayer()
        layer3.frame=CGRectMake(controlPoint1.x,controlPoint1.y,5)
        layer3.backgroundColor=UIColor.redColor().CGColor

        let layer4=CALayer()
        layer4.frame=CGRectMake(controlPoint2.x,controlPoint2.y,5)
        layer4.backgroundColor=UIColor.redColor().CGColor

        let path=UIBezierPath()
        let layer=CAShapeLayer()
        path.movetoPoint(startPoint)
        path.addCurvetoPoint(endPoint,controlPoint1:controlPoint1,controlPoint2: controlPoint2)

        layer.path=path.CGPath
        layer.fillColor=UIColor.clearColor().CGColor
        layer.strokeColor=UIColor.blackColor().CGColor

        view.layer.addSublayer(layer)
        view.layer.addSublayer(layer1)
        view.layer.addSublayer(layer2)
        view.layer.addSublayer(layer3)
        view.layer.addSublayer(layer4)

5、添加动画

let layer=CAShapeLayer()
        layer.backgroundColor=UIColor.lightGrayColor().CGColor
        let animation = CABasicAnimation(keyPath: "strokeEnd")
        animation.fromValue=0
        animation.tovalue=1
        animation.duration=2
        layer.addAnimation(animation,forKey: "")
       view.layer.addSublayer(layer)

相关文章

软件简介:蓝湖辅助工具,减少移动端开发中控件属性的复制和粘...
现实生活中,我们听到的声音都是时间连续的,我们称为这种信...
前言最近在B站上看到一个漂亮的仙女姐姐跳舞视频,循环看了亿...
【Android App】实战项目之仿抖音的短视频分享App(附源码和...
前言这一篇博客应该是我花时间最多的一次了,从2022年1月底至...
因为我既对接过session、cookie,也对接过JWT,今年因为工作...