radiusが入った三角形のCGPathを作る

rect(四角形)であればUIBezierPathを使えば簡単に生成できる。
三角形の場合はCGMutablePathを使って生成する(三角形でなく他の多角形でも可能)。
下は右向きの三角形のpathを作る例。

// 各頂点を定義
let top = CGPoint(x: 22, y: 18)
let right = CGPoint(x: top.x + size.width, y: top.y + size.height / 2)
let bottom = CGPoint(x: top.x, y: top.y + size.height)
let middle = CGPoint(x: top.x, y: top.y + size.height / 2) // 始点のためのpoint

// pathを定義
let path = CGMutablePath()
path.move(to: middle)
path.addArc(tangent1End: top, tangent2End: right, radius: 1)
path.addArc(tangent1End: right, tangent2End: bottom, radius: 1)
path.addArc(tangent1End: bottom, tangent2End: top, radius: 1)
path.closeSubpath()

let shapeLayer = CAShapeLayer()
shapeLayer.path = originalPath.cgPath

始点を頂点にしないでどこかの辺中にしないと、始点のみradiusが入らなくなってしまうので注意。

参考記事

stackoverflow.com

公式リファレンス

CGMutablePath - Core Graphics | Apple Developer Documentation