//MARK: 绘制虚线 let layer0 = CAShapeLayer() layer0.strokeColor = UIColor.green.cgColor layer0.lineWidth = 0.5 //线段宽度10 间距10 let arr :NSArray = NSArray(array: [10,10]) //基于线段的起始位置 layer0.lineDashPhase = 0 layer0.lineDashPattern = arr as? [NSNumber] self.view.layer.addSublayer(layer0) //路径 let mdotteShapePath = CGMutablePath() mdotteShapePath.move(to: CGPoint(x:0,y: 30)) mdotteShapePath.addLine(to: CGPoint(x:UIScreen.main.bounds.size.width,y:30)) layer0.path = mdotteShapePath //MARK: 实心矩形 let layer = CAShapeLayer() layer.frame = CGRect(x:80,y:50,width:150,height:50) layer.backgroundColor = UIColor.green.cgColor view.layer.addSublayer(layer) //MARK: 矩形框 let layer1 = CAShapeLayer() layer1.fillColor = UIColor.clear.cgColor layer1.strokeColor = UIColor.green.cgColor view.layer.addSublayer(layer1) let path1 = UIBezierPath(rect: CGRect(x:80,y:110,height:50)) layer1.path = path1.cgPath //MARK: 圆角矩形 let path2 = UIBezierPath(roundedRect: CGRect(x:80,y:170,height:50),cornerRadius: 50) let layer2 = CAShapeLayer() layer2.path = path2.cgPath layer2.fillColor = UIColor.clear.cgColor layer2.strokeColor = UIColor.green.cgColor view.layer.addSublayer(layer2) //MARK: 圆形 let radius: CGFloat = 20 let startAngle: CGFloat = 0.0 let endAngle: CGFloat = CGFloat(M_PI * 2) let path3 = UIBezierPath(arcCenter: view.center,radius: radius,startAngle: startAngle,endAngle: endAngle,clockwise: true) let layer3 = CAShapeLayer() layer3.path = path3.cgPath layer3.fillColor = UIColor.clear.cgColor layer3.strokeColor = UIColor.green.cgColor view.layer.addSublayer(layer3) //MARK: 贝塞尔曲线 let startPoint = CGPoint(x:20,y:400) let endPoint = CGPoint(x:320,y:400) let controlPoint = CGPoint(x:170,y:300) let controlPoint1 = CGPoint(x:120,y:300) let controlPoint2 = CGPoint(x:220,y:500) //曲线1 let path10 = UIBezierPath() let layer10 = CAShapeLayer() path10.move(to: startPoint) path10.addQuadCurve(to: endPoint,controlPoint: controlPoint) layer10.path = path10.cgPath layer10.fillColor = UIColor.clear.cgColor layer10.strokeColor = UIColor.black.cgColor view.layer.addSublayer(layer10) //曲线2 let path20 = UIBezierPath() let layer20 = CAShapeLayer() path20.move(to: startPoint) path20.addCurve(to: endPoint,controlPoint1: controlPoint1,controlPoint2: controlPoint2) layer20.path = path20.cgPath layer20.fillColor = UIColor.clear.cgColor layer20.strokeColor = UIColor.black.cgColor view.layer.addSublayer(layer20) //MARK: 动画 //动画1 let animation = CABasicAnimation(keyPath: "strokeEnd") animation.fromValue = 0 animation.toValue = 1 animation.duration = 2 layer10.add(animation,forKey: "") //动画2 layer20.strokeStart = 0 layer20.strokeEnd = 1 let animation21 = CABasicAnimation(keyPath: "strokeStart") //起始位置中间 结束为止左端 animation21.fromValue = 0.5 animation21.toValue = 0 animation21.duration = 2 let animation22 = CABasicAnimation(keyPath: "strokeEnd") //起始位置中间 结束为止右端 animation22.fromValue = 0.5 animation22.toValue = 1 animation22.duration = 2 layer20.add(animation21,forKey: "") layer20.add(animation22,forKey: "") //动画3 let animation23 = CABasicAnimation(keyPath: "lineWidth") animation23.fromValue = 1 animation23.toValue = 10 animation23.duration = 5 layer1.add(animation23,forKey: "")