我已经定义了一个 UIBezierPath 形状(由各种线段组成),但根据场景,我只希望它的某些部分可见。这可能吗?
我最初的想法是在为 UIBezierPath 设置动画时如何将 .fromValue
设置为 .toValue
。我可以设置某种“当前值”(我认为存在,但仅作为 getOnly 属性)以在动画上下文之外完成类似的操作吗?
我想到的另一种方法是将我的路径视为一种“模板”路径,然后将其分解为各种子路径,但我希望有一种更简单/更直接的方法(除非这种方法是比我预期的要容易......)。
答案 0 :(得分:2)
UIBezierPath
没有,但是如果您将路径添加到 CAShapeLayer
,您可以控制 strokeStart
和 strokeEnd
。
在操场上试试这个:
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)
以上产生:
没有设置笔划起点和终点的两条线,视图看起来像: