CALayer解析8:CAShapeLayer

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
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容