是否可以只显示/描边 UIBezierPath 的一部分?

时间:2021-02-21 07:56:31

标签: ios swift uibezierpath

我已经定义了一个 UIBezierPath 形状(由各种线段组成),但根据场景,我只希望它的某些部分可见。这可能吗?

我最初的想法是在为 UIBezierPath 设置动画时如何将 .fromValue 设置为 .toValue。我可以设置某种“当前值”(我认为存在,但仅作为 getOnly 属性)以在动画上下文之外完成类似的操作吗?

我想到的另一种方法是将我的路径视为一种“模板”路径,然后将其分解为各种子路径,但我希望有一种更简单/更直接的方法(除非这种方法是比我预期的要容易......)。

1 个答案:

答案 0 :(得分:2)

UIBezierPath 没有,但是如果您将路径添加到 CAShapeLayer,您可以控制 strokeStartstrokeEnd

在操场上试试这个:

let path = UIBezierPath()
path.move(to: .zero)
path.addLine(to: CGPoint(x: 10, y: 10))
path.addLine(to: CGPoint(x: 20, y: 0))
path.addLine(to: CGPoint(x: 30, y: 10))
let layer = CAShapeLayer()
layer.path = path.cgPath
layer.strokeColor = UIColor.red.cgColor
layer.fillColor = UIColor.clear.cgColor

// Note these lines
layer.strokeStart = 0.2 // start at 20% of the way
layer.strokeEnd = 0.8 // end at 80% of the way

layer.lineWidth = 2
let view = UIView(frame: CGRect(x: 0, y: 0, width: 50, height: 50))
view.layer.addSublayer(layer)

以上产生:

enter image description here

没有设置笔划起点和终点的两条线,视图看起来像:

enter image description here