我有一个视图被限制在顶部和底部,这样它的高度将是动态的。然后添加一个图层以添加垂直虚线。
以下是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/

10-09 01:27