Создание круга с дугами с использованием UIBezierPath (изображения включены)

Я использую SpriteKit и пытаюсь добиться следующего эффекта с помощью дуг

желаемый эффект

Я создал три SKShapeNodes и присвоил свойство UIBezierPath's CGPath свойству пути SKShapeNode's. Вот мой код:

func createCircle(){

    //container contains the SKShapeNodes
    self.container = SKShapeNode()
    self.container.position = CGPoint(x: self.frame.size.width/2, y: self.frame.size.height/2)

    //creating UIBezierPaths

    let arc = UIBezierPath(arcCenter: CGPoint(x: 0, y: 0), radius: 100, startAngle: CGFloat(M_PI), endAngle: CGFloat(M_PI/2) , clockwise: false)
    arc.flatness = 100
    self.red = SKShapeNode()
    self.red.lineWidth = 20
    self.red.strokeColor = SKColor.redColor()
    self.red.path = arc.CGPath


    let arc1 = UIBezierPath(arcCenter: CGPoint(x: 0, y: 0), radius: 100, startAngle: CGFloat(M_PI/2), endAngle: CGFloat(0.0), clockwise: false)
    self.blue = SKShapeNode()
    self.blue.strokeColor = SKColor.whiteColor()
    self.blue.lineWidth = 20
    self.blue.path = arc1.CGPath


    let arc2 = UIBezierPath(arcCenter: CGPoint(x: 0, y: 0), radius: 100, startAngle: 0.1, endAngle: CGFloat(3*M_PI/2), clockwise: false)
    self.yellow = SKShapeNode()
    self.yellow.strokeColor = SKColor.yellowColor()
    self.yellow.lineWidth = 20
    self.yellow.path = arc2.CGPath


    //adding arcs to the container
    self.container.addChild(red)
    self.container.addChild(yellow)
    self.container.addChild(blue)


    //adding container to the GameScene
    self.addChild(container)
   }

После экспериментов с startAngle и endAngle я смог сделать это:

это

Форма вывода кода не идентична кругу, который я хочу создать. Как я могу получить пробелы в изображении с желаемым эффектом?


person NSHippie    schedule 18.11.2015    source источник
comment
Либо центр изменяется для каждой дуги (небольшое смещение), либо вы просто используете смещение для углов...   -  person Larme    schedule 18.11.2015


Ответы (1)


Используя это изображение в качестве эталона, я смог внести изменения в метод дуги startAngle и endAngleиз UIBezierPath. Изображение результата

person NSHippie    schedule 18.11.2015