2016-01-31 5 views
2

Я очень хорошо знаком с рисованием заполненного элемента createEllipseInRect, но мне было интересно, есть ли способ сделать это программно. Я хочу, чтобы круг был разделен по центру с двумя отдельными цветами с обеих сторон. У меня нет кода, так как я понятия не имею, с чего начать.Как нарисовать полый круг с двумя разными цветами?

something like this

Помощь высоко ценится.

+0

Ладно, не могли бы вы дать мне представление о том, с чего начать? – KeepItSimple

ответ

2

Вы можете попробовать использовать SKCropNode, это позволяет показывать только половину каждого круга. Ниже приведен пример кода.

class GameScene: SKScene { 
override func didMoveToView(view: SKView) { 

    anchorPoint = CGPointMake(0.5, 0.5) 

    // Half Circle #1 

    let myCrop1 = SKCropNode() 

    let myMask1 = SKSpriteNode(color: UIColor.blackColor(), size: CGSizeMake(100, 100)) 
    myMask1.position.y = -50 

    let circle1 = SKShapeNode(circleOfRadius: 50) 
    circle1.lineWidth = 0 
    circle1.fillColor = UIColor.blueColor() 

    myCrop1.addChild(circle1) 
    myCrop1.maskNode = myMask1 
    addChild(myCrop1) 

    // Half Circle #2 

    let myCrop2 = SKCropNode() 

    let myMask2 = SKSpriteNode(color: UIColor.blackColor(), size: CGSizeMake(100, 100)) 
    myMask2.position.y = 50 

    let circle2 = SKShapeNode(circleOfRadius: 50) 
    circle2.lineWidth = 0 
    circle2.fillColor = UIColor.redColor() 

    myCrop2.addChild(circle2) 
    myCrop2.maskNode = myMask2 
    addChild(myCrop2) 


    } 

} 

Я не использовал SKCropNode, что намного раньше, так что я не уверен, насколько хорошо мой код, но ниже результат я получил на моем iPhone.

enter image description here

EDIT: Вы должны иметь возможность добавить 3-ий SKCropNode, чтобы сделать центр окружности прозрачной, если это необходимо.

EDIT: Ниже для прозрачного центра

class GameScene: SKScene { 
override func didMoveToView(view: SKView) { 

    anchorPoint = CGPointMake(0.5, 0.5) 

    let transparentCenterMask = SKShapeNode(circleOfRadius: 50) 
    transparentCenterMask.lineWidth = 20 
    let transparentCenterCrop = SKCropNode() 
    transparentCenterCrop.maskNode = transparentCenterMask 

    // Half Circle #1 

    let myCrop1 = SKCropNode() 

    let myMask1 = SKSpriteNode(color: UIColor.blackColor(), size: CGSizeMake(100, 100)) 
    myMask1.position.y = -50 

    let circle1 = SKShapeNode(circleOfRadius: 50) 
    circle1.lineWidth = 0 
    circle1.fillColor = UIColor.blueColor() 

    myCrop1.addChild(circle1) 
    myCrop1.maskNode = myMask1 
    transparentCenterCrop.addChild(myCrop1) 

    // Half Circle #2 

    let myCrop2 = SKCropNode() 

    let myMask2 = SKSpriteNode(color: UIColor.blackColor(), size: CGSizeMake(100, 100)) 
    myMask2.position.y = 50 

    let circle2 = SKShapeNode(circleOfRadius: 50) 
    circle2.lineWidth = 0 
    circle2.fillColor = UIColor.redColor() 

    myCrop2.addChild(circle2) 
    myCrop2.maskNode = myMask2 
    transparentCenterCrop.addChild(myCrop2) 

    addChild(transparentCenterCrop) 


    } 

} 

enter image description here

+0

Это именно то, что я искал! Спасибо огромное! – KeepItSimple