您的位置:首页 > 移动开发 > Swift

Swift CAShapeLayer,UIBezierPath绘制图形

2016-03-06 18:31 591 查看
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, 150, 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, 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, 5)
layer2.backgroundColor=UIColor.redColor().CGColor

let layer3=CALayer()
layer3.frame=CGRectMake(controlPoint.x, controlPoint.y, 5, 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 endPoint=CGPointMake(300, 300)
let controlPoint1=CGPointMake(120, 180)
let controlPoint2=CGPointMake(220, 420)

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, 5)
layer2.backgroundColor=UIColor.redColor().CGColor

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

let layer4=CALayer()
layer4.frame=CGRectMake(controlPoint2.x, controlPoint2.y, 5, 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)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: