Как нарисовать полый круг двумя разными цветами?
Я очень хорошо знаком с рисованием заполненного узла формы createEllipseInRect, но мне было интересно, есть ли способ сделать это программно. Я хочу, чтобы круг разделялся по центру двумя разными цветами с каждой стороны. У меня нет кода, так как я не знаю, с чего начать.
Помощь высоко ценится.
1 ответ
Вы можете попробовать использовать 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.
РЕДАКТИРОВАТЬ: Вы должны иметь возможность добавить третий SKCropNode, чтобы сделать центр круга прозрачным, если это необходимо.
РЕДАКТИРОВАТЬ: ниже для прозрачного центра
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)
}
}