加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Swift CAShapeLayer,UIBezierPath绘制图形

发布时间:2020-12-14 07:11:58 所属栏目:百科 来源:网络整理
导读:1、绘制矩形 //利用CAShapeLayer绘图一个简单的矩形 let layer=CAShapeLayer() layer .frame =CGRectMake( 110 , 100 , 150 , 100 ) layer .backgroundColor =UIColor .blackColor () .CGColor view .layer .addSublayer (layer) //利用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)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读