Swift:根据父视图大小动态调整/缩放 UIBezierPath

Sye*_*sir 2 resize cashapelayer ios uibezierpath swift

我正在使用UIBezierPathCAShapeLayer绘制一条线并将其作为子层添加到视图中。一切工作正常,现在我必须调整“线”及其父视图的大小,并严格保持线与视图的比例相同。

下面是创建一条线的代码:

let line = UIBezierPath.arrow(from: startPoint, to: endPoint, tailWidth: 5, headWidth: 20, headLength: CGFloat(inputLength * 0.1))
let shapeLayer = CAShapeLayer()
shapeLayer.path = line .cgPath
self.view.layer.addSublayer(shapeLayer)
Run Code Online (Sandbox Code Playgroud)

小智 5

我想你可以缩放保留路径的视图,比如

let scaleWidth = toSize.width / fromSize.width
let scaleHeight = toSize.height / fromSize.height
path.apply(CGAffineTransform(scaleX: scaleWidth, y: scaleHeight))
Run Code Online (Sandbox Code Playgroud)

并使用比例因子来获取路径的某个点