1.简介
CAShapeLayer可以通路径绘制矢量图形,能够比使用图片方便,能够不用考虑不同屏幕分辨率@2x和@3x的问题。
2.属性
属性 | 作用 |
---|---|
path | 路径,贝塞尔曲线 |
fillColor | 填充颜色 |
fillRule | 填充规则 |
strokeColor | 线条颜色 |
strokeStart | 线条开始的地方,默认0 |
strokeEnd | 线条结束的地方,默认1 |
lineWidth | 线条宽度 |
miterLimit | 线条的限制 |
lineCap | 终点样式 |
lineJoin | 线条拐点样式 |
lineDashPhase | 线条样式的起始位置 |
lineDashPattern | 设置线条的样式,nsnumber数组 |
3.使用
class ViewController: UIViewController {
let rwColor = UIColor(red: 11/255.0, green: 86/255.0, blue: 14/255.0, alpha: 1)
let rwPath = UIBezierPath()
let rwLayer = CAShapeLayer()
override func viewDidLoad() {
super.viewDidLoad()
setUpPath()
setUpLayer()
view.layer.addSublayer(rwLayer)
}
//创建路径对象
func setUpPath() {
rwPath.move(to: CGPoint(x: 30, y: 196))
rwPath.addCurve(to: CGPoint(x: 112.0, y: 12.5), controlPoint1: CGPoint(x: 110.56, y: 13.79), controlPoint2: CGPoint(x: 112.07, y: 13.01))
rwPath.addCurve(to: CGPoint(x: 194, y: 196), controlPoint1: CGPoint(x: 111.9, y: 11.81), controlPoint2: CGPoint(x: 194, y: 196))
rwPath.addLine(to: CGPoint(x: 30.0, y: 85.68))
rwPath.addLine(to: CGPoint(x: 194.0, y: 48.91))
rwPath.addLine(to: CGPoint(x: 30, y: 196))
rwPath.close()
}
//创建图层对象
func setUpLayer() {
rwLayer.path = rwPath.cgPath
rwLayer.fillColor = rwColor.cgColor
rwLayer.fillRule = kCAFillRuleNonZero
rwLayer.lineCap = kCALineCapButt
rwLayer.lineDashPattern = nil
rwLayer.lineDashPhase = 0
rwLayer.lineJoin = kCALineJoinMiter
rwLayer.lineWidth = 1
rwLayer.miterLimit = 10
rwLayer.strokeColor = rwColor.cgColor
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
}
结果:
屏幕快照 2017-09-04 上午11.17.03.png