我编写的代码在iOS中绘制了弧线,并将其转换为可在macOS中使用。
这是绘制弧线的iOS代码。
let circleCenter = CGPoint(x: self.frame.width / 2, y: self.frame.height / 2)
let circlePath = UIBezierPath(arcCenter: circleCenter, radius: self.frame.width / 2, startAngle: -CGFloat.pi / 2, endAngle: 1.5 * CGFloat.pi, clockwise: true)
let progress = CAShapeLayer()
progress.path = circlePath.cgPath
progress.strokeColor = UIColor.green.cgColor
progress.strokeEnd = 0.4
progress.lineCap = .round
progress.lineWidth = 15
progress.fillColor = UIColor.clear.cgColor
self.layer.addSublayer(progress)
这是我转换为在macOS中使用的代码。
let circle = NSBezierPath()
circle.appendArc(withCenter: circleCenter, radius: self.frame.width / 2, startAngle: rad2deg(-CGFloat.pi / 2), endAngle: rad2deg(1.5 * CGFloat.pi))
let progress = CAShapeLayer()
progress.path = circle.cgPath
progress.strokeColor = NSColor.green.cgColor
progress.strokeEnd = 0.4
progress.lineCap = .round
progress.lineWidth = 15
progress.fillColor = NSColor.clear.cgColor
self.layer?.addSublayer(progress)
该代码可在macOS中使用,但是结果图被翻转了。我知道iOS和MacOS的起始坐标不同,应该更改macOS代码以处理此问题。实现此目标的最佳方法是什么?任何帮助将不胜感激。
答案 0 :(得分:0)
下面是El Tomato的答案。
覆盖var isFlipped:布尔{return true}