我有一个被限制在顶部和底部的视图,使得它的高度是动态的。然后我添加一个图层来添加垂直虚线。
以下是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
。
答案 0 :(得分:0)
您正在获得0
边界,因为尚未设置框架。传入框架后,您的第一次渲染将是正确的。但之后,当约束更改框架时,您还需要更新虚线路径。
您可以覆盖您的UIView属性
override var frame: CGRect {
didSet {
updatePath()
}
}
并为边界做同样的事情
override var bounds: CGRect {
didSet {
updatePath()
}
}
在updatePath()
中,您首先必须删除之前绘制的路径,或者只是更新它。