我有一个视图被限制在顶部和底部,这样它的高度将是动态的。然后添加一个图层以添加垂直虚线。
以下是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
边界,因为帧尚未设置。一旦通过帧,第一次渲染将是正确的。但之后,当约束更改帧时,也需要更新虚线路径。
可以重写UIView属性
override var frame: CGRect {
didSet {
updatePath()
}
}
对边界也一样
override var bounds: CGRect {
didSet {
updatePath()
}
}
在
updatePath()
中,首先必须删除以前绘制的路径,或者只更新它。关于ios - CGMutablePath X和Y应该占据其 View 的界限,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49662821/