遇到的問題:
前置情況:
邊界是通過UIBezierPath畫的一個(gè)圓弧+“直線”迅矛。
let path = UIBezierPath()
path.addArc(withCenter: centerPoint, radius: radius, startAngle: startAngle, endAngle: endAngle, clockwise: true)
let lineToStartPoint = CGPoint(x: centerPoint.x + radius * cos(startAngle), y: centerPoint.y + radius * sin(startAngle))
//這兒是用直線直接連接砰碴。
path.addLine(to: lineToStartPoint)
path.close()
解決方法:
let path = UIBezierPath()
path.addArc(withCenter: centerPoint, radius: radius, startAngle: startAngle, endAngle: endAngle, clockwise: true)
let lineToStartPoint = CGPoint(x: centerPoint.x + radius * cos(startAngle), y: centerPoint.y + radius * sin(startAngle))
//用弧線方式連接兩個(gè)點(diǎn)迷守,但是控制點(diǎn)也在兩點(diǎn)直接的直線上,從而實(shí)現(xiàn)直線效果+碰撞反饋扔亥。
path.addQuadCurve(to: lineToStartPoint, controlPoint: CGPoint(x: centerPoint.x, y: lineToStartPoint.y))
path.close()
當(dāng)然第一種情況,可以實(shí)現(xiàn)另外的一種“功能”谈为。