Swift CAShapeLayer,一个火柴人,一个遮罩

火柴人

贴代码:

        let path = UIBezierPath()
        path.move(to: CGPoint.init(x: 175, y: 100))
        
        path.addArc(withCenter: CGPoint.init(x: 150, y: 100), radius: 25, startAngle: 0, endAngle: CGFloat(2*Double.pi), clockwise: true)
        path.move(to: CGPoint.init(x: 150, y: 125))
        path.addLine(to: CGPoint.init(x: 150, y: 175))
        path.addLine(to: CGPoint.init(x: 125, y: 225))
        path.move(to: CGPoint.init(x: 150, y: 175))
        path.addLine(to: CGPoint.init(x: 175, y: 225))
        path.move(to: CGPoint.init(x: 100, y: 150))
        path.addLine(to: CGPoint.init(x: 200, y: 150))
        
        let shapeLayer = CAShapeLayer()
        shapeLayer.strokeColor = UIColor.red.cgColor
        shapeLayer.fillColor = UIColor.clear.cgColor
        shapeLayer.lineWidth = 5
        shapeLayer.lineJoin = kCALineJoinRound
        shapeLayer.lineCap = kCALineCapRound
        shapeLayer.path = path.cgPath
        self.view.layer.addSublayer(shapeLayer)

效果图:

火柴人.png

遮罩

贴代码:

let view = UIView.init(frame: CGRect.init(x: 50, y: 50, width: 100, height: 100))
        view.backgroundColor = UIColor.cyan
        self.view.addSubview(view)
        
        let path = UIBezierPath()
        path.move(to: CGPoint.init(x: 0, y: 0))
        path.addLine(to: CGPoint.init(x: 70, y: 0))
        path.addLine(to: CGPoint.init(x: 100, y: 30))
        path.addLine(to: CGPoint.init(x: 70, y: 60))
        path.addLine(to: CGPoint.init(x: 70, y: 100))
        path.addLine(to: CGPoint.init(x: 0, y: 100))
        path.close()
        
        let shapeLayer = CAShapeLayer()
        shapeLayer.path = path.cgPath
        view.layer.mask = shapeLayer

效果图:

遮罩.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容