下面的代码无法生成四分之一圈。但是,如果将结束角更改为.pi,代码就会像预期的那样生成半圆。
为什么四分之一圈失败了?
// Create circle
let circleSize = CGSize(width: width, height: width)
let circle = SKSpriteNode(texture: SKTexture(imageNamed: "Dot.png"), color: color, size: circleSize)
circle.colorBlendFactor = 1.0
// Add circle to crop node
let cropNode = SKCropNode()
cropNode.addChild(circle)
// Set crop node mask
let bezierPath = UIBezierPath(arcCenter: CGPoint(x: 0, y: 0), radius: width/2, startAngle: 0, endAngle: .pi/2, clockwise: true)
let maskNode = SKShapeNode(path: bezierPath.cgPath)
maskNode.isAntialiased = false
maskNode.lineWidth = 0
maskNode.fillColor = color
cropNode.maskNode = maskNodeDot.png (图像为白色,请单击下面下载):

发布于 2018-07-09 02:27:50
问题是,您只绘制弧,而UIBezierPath通过将一条线画回起点来关闭路径。当你画一个半圆时,这是因为画的线是圆的直径。
在四分之一圈的情况下,你会得到一个连接两个端点的和弦,但这并不能给出你想要的结果。
要解决这一问题,请在绘制弧后画一条线到圆圈(0, 0)的中心。然后,当路径被关闭时,它会将另一个半径拉回弧的起始点。
新bezierPath代码:
let bezierPath = UIBezierPath(arcCenter: CGPoint(x: 0, y: 0), radius: width/2, startAngle: 0, endAngle: .pi/2, clockwise: true)
bezierPath.addLine(to: CGPoint(x: 0, y: 0))https://stackoverflow.com/questions/51236802
复制相似问题