使用SpriteKit中的UIBezierPath绘制圆形圆形

时间:2017-03-13 14:15:00

标签: ios swift sprite-kit draw uibezierpath

挖掘如下图所示的形状,可以触摸和移动每个形状。所以我认为SpriteKit与UIBezierPath相结合可以做到。

enter image description here

这是我的代码:

for i in 1...20{
            let shape = SKShapeNode()
            shape.path = createPointerPath().cgPath
            shape.position = CGPoint(x: frame.midX-10, y: frame.midY+40)
            shape.fillColor = UIColor(red: 1.0, green: 0.439, blue: 0.678, alpha: 1.0)
            shape.strokeColor = .white
            shape.lineWidth = 2
            shape.name = "\(i)"
            let r = SKAction.rotate(byAngle: CGFloat(i)*15.0, duration: 0.1)
            shape.run(r)
            addChild(shape)
            shapeArr.append(shape)
        }

创建shap:

func createPointerPath() -> UIBezierPath {
    let pointerHeight:CGFloat = 80
    let pointerWidth: CGFloat = 20
    let pointerPath = UIBezierPath()
    pointerPath.move(to: CGPoint(x:pointerWidth / 2, y:0))
    pointerPath.addCurve(to: CGPoint(x:pointerWidth / 2, y:pointerHeight),
                         controlPoint1: CGPoint(x:pointerWidth / 2, y:0), controlPoint2: CGPoint(x:-pointerWidth, y:pointerHeight))
    pointerPath.addCurve(to: CGPoint(x:pointerWidth / 2, y:0),
                         controlPoint1: CGPoint(x:pointerWidth * 2, y:pointerHeight), controlPoint2: CGPoint(x:pointerWidth / 2, y:0))
    return pointerPath
}

我得到了以下内容:

enter image description here

形状只是旋转成圆圈。这里有两个问题:

  1. 笔画看起来很丑,每个形状只有一半。

  2. 我真正想要的是:

    - 首先获取形状编号。

    - 从固定边距计算每个形状的宽度,以便平均显示每个形状。

    - 从中​​心创建形状,但不能旋转。

  3. 任何人都可以提出更多建议吗?

    THX。

0 个答案:

没有答案