0
我想繪製一條路徑:CGMutablePath
但我在添加路徑時遇到問題。無不是與預期的參數類型兼容'UnsafePointer'CGAffineTransform'
無與預期的參數類型不兼容CGAffineTransform
override func draw(_ rect: CGRect) {
let context = UIGraphicsGetCurrentContext()
let path = CGMutablePath()
CGPathAddArc(path, nil, centerX, centerY, radius, -CGFloat(M_PI/2), CGFloat(GLKMathDegreesToRadians(currentAngle)), false)
context!.addPath(path)
context!.setStrokeColor(UIColor.blue.cgColor)
context!.setLineWidth(3)
context!.strokePath()
}
試了幾件與0, options: nil, options: [ ]
這些都不曾更換零。
在@vadian答案的幫助下。 解決方案:
override func draw(_ rect: CGRect) {
let context = UIGraphicsGetCurrentContext()!
let path = CGMutablePath()
path.addArc(center: CGPoint(x:centerX, y:centerY), radius: radius, startAngle: -(CGFloat.pi/2), endAngle: CGFloat(GLKMathDegreesToRadians(currentAngle)), clockwise: false)
context.addPath(path)
context.setStrokeColor(UIColor.blue.cgColor)
context.setLineWidth(3)
context.strokePath()
}
可能還不錯,可以添加一個小例子,說明如何避免在OP代碼中使用所有'!'。 – rmaddy
@rmaddy在這種特殊情況下,強制展開的上下文非常好。根據文檔,任何'UIView'在調用'drawRect'之前提供一個有效的上下文(*在調用它的drawRect:方法之前,視圖對象會將有效的上下文推送到堆棧上,使其成爲當前的*) – vadian
然後'let context = UIGraphicsGetCurrentContext()!'並避免使用所有'context!'用法。 – rmaddy