首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Swift:用SKCropNode不工作创建四分之一圈

Swift:用SKCropNode不工作创建四分之一圈
EN

Stack Overflow用户
提问于 2018-07-08 23:48:49
回答 1查看 614关注 0票数 2

下面的代码无法生成四分之一圈。但是,如果将结束角更改为.pi,代码就会像预期的那样生成半圆。

为什么四分之一圈失败了?

代码语言:javascript
复制
    // 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 = maskNode

Dot.png (图像为白色,请单击下面下载):

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-07-09 02:27:50

问题是,您只绘制弧,而UIBezierPath通过将一条线画回起点来关闭路径。当你画一个半圆时,这是因为画的线是圆的直径。

在四分之一圈的情况下,你会得到一个连接两个端点的和弦,但这并不能给出你想要的结果。

要解决这一问题,请在绘制弧后画一条线到圆圈(0, 0)的中心。然后,当路径被关闭时,它会将另一个半径拉回弧的起始点。

新bezierPath代码:

代码语言:javascript
复制
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))
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51236802

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档