iOS 完全支援貝塞爾曲線(Bézier Curve)路徑繪製,無論是二次、三次貝塞爾,還是任意階數,均可透過 UIBezierPath 或 Core Graphics (CGPath) 實現自定義軌跡繪製、動畫路徑、形狀遮罩等。
UIBezierPath:Objective-C/Swift 友善封裝,支援 move(to:)、addLine(to:)、addQuadCurve(to:controlPoint:)、addCurve(to:controlPoint1:controlPoint2:) 等方法。CAShapeLayer + UIBezierPath:將路徑賦予圖層,即可顯示、描邊、填充、動畫(strokeStart/strokeEnd)。CGPath / CGMutablePath:Core Graphics 底層 API,效能更高,適合大量路徑運算。CAKeyframeAnimation 的 path 屬性設為貝塞爾路徑,物件沿曲線移動。CABasicAnimation 位移。layer.mask = shapeLayer 實現非矩形顯示區域。詳細程式碼範例請參考:iOS 貝塞爾曲線路徑繪製完整教學
let path = UIBezierPath()
path.move(to: CGPoint(x: 50, y: 200))
path.addCurve(to: CGPoint(x: 300, y: 200),
controlPoint1: CGPoint(x: 100, y: 50),
controlPoint2: CGPoint(x: 250, y: 350))
let shapeLayer = CAShapeLayer()
shapeLayer.path = path.cgPath
shapeLayer.strokeColor = UIColor.systemBlue.cgColor
shapeLayer.fillColor = UIColor.clear.cgColor
shapeLayer.lineWidth = 3
view.layer.addSublayer(shapeLayer)
// 路徑動畫
let anim = CABasicAnimation(keyPath: "strokeEnd")
anim.fromValue = 0
anim.toValue = 1
anim.duration = 2
shapeLayer.add(anim, forKey: "draw")
掌握控制點對曲線形狀的影響,即可自由繪製任意平滑軌跡。