CGMutablePath X和Y应该采用它的视图边界

时间:2018-04-05 01:30:24

标签: ios swift

我有一个被限制在顶部和底部的视图,使得它的高度是动态的。然后我添加一个图层来添加垂直虚线。

以下是extension UIView中的代码:

let shapeLayer = CAShapeLayer()
shapeLayer.strokeColor = UIColor.black.cgColor
shapeLayer.lineWidth = 3
shapeLayer.lineDashPattern = [4, 3]
let path = CGMutablePath()
path.addLines(between: [CGPoint(x: x, y: y),
    CGPoint(x: x, y: 40)])
shapeLayer.path = path
layer.addSublayer(shapeLayer)

我希望40是动态的并且采用视图的边界但是当我检查边界的值时,它总是0

1 个答案:

答案 0 :(得分:0)

您正在获得0边界,因为尚未设置框架。传入框架后,您的第一次渲染将是正确的。但之后,当约束更改框架时,您还需要更新虚线路径。

您可以覆盖您的UIView属性

override var frame: CGRect {
        didSet {
            updatePath()
        }
    }

并为边界做同样的事情

override var bounds: CGRect {
        didSet {
            updatePath()
        }
    }

updatePath()中,您首先必须删除之前绘制的路径,或者只是更新它。