Первое сообщение в stackoverflow so, в первую очередь, привет!Как изменить цвет элемента с помощью UIBezierPath?
Я пробовал свою руку в Swift в первый раз и работаю над проектом, и мне просто нужна была помощь в решении проблемы, которую я испытываю. У меня есть круг с использованием UIBezierPath, который я бы хотел изменить динамически. Однако, когда я пытаюсь даже «жестко закодировать» цвет, я не могу заставить его меняться. Я пробовал посмотреть здесь: How to change the color of a UIBezierPath in Swift?, но он не ответил на мой вопрос. Тем не менее, я вижу, что в одном ответе говорится, что путь Безье не имеет цвета. Если да, то как мне тогда изменить цвет круга, идущего по его пути?
Вот код, я работаю с:
outerCircle.path = UIBezierPath(ovalInRect: CGRect(x: 0.0, y: 0.0, width: frameSize.width, height: frameSize.height)).CGPath
outerCircle.lineWidth = 8.0
outerCircle.strokeStart = 0.0
outerCircle.strokeEnd = 0.45
outerCircle.lineCap = kCALineCapRound
outerCircle.fillColor = UIColor.clearColor().CGColor
outerCircle.strokeColor = UIColor.grayColor().CGColor
outerCircleView.layer.addSublayer(outerCircle)
outerCircle.strokeStart = 0.0
outerCircle.strokeEnd = 1.0
vibrancyView.contentView.addSubview(outerCircleView)
innerCircleView.frame.size = frameSize
let innerCirclePadding: CGFloat = 12
innerCircle.path = UIBezierPath(ovalInRect: CGRect(x: innerCirclePadding, y: innerCirclePadding, width: frameSize.width - 2*innerCirclePadding, height: frameSize.height - 2*innerCirclePadding)).CGPath
innerCircle.lineWidth = 4.0
innerCircle.strokeStart = 0.5
innerCircle.strokeEnd = 0.9
innerCircle.lineCap = kCALineCapRound
innerCircle.fillColor = UIColor.clearColor().CGColor
innerCircle.strokeColor = UIColor.grayColor().CGColor
innerCircleView.layer.addSublayer(innerCircle)
Опять же, я прошу прощения, если это очевидный ответ или ответ уже был дан. Я ценю любые советы, которые помогут мне указать в правильном направлении. Спасибо.
ОБНОВЛЕНИЕ: Итак, вот что я пытался сделать. Я изменил цвета заливки и обводки обеих внутренних и внешних кругов на зеленый, но я до сих пор есть четкие круги:
outerCircle.path = UIBezierPath(ovalInRect: CGRect(x: 0.0, y: 0.0, width: frameSize.width, height: frameSize.height)).CGPath
outerCircle.lineWidth = 8.0
outerCircle.strokeStart = 0.0
outerCircle.strokeEnd = 0.45
outerCircle.lineCap = kCALineCapRound
outerCircle.fillColor = UIColor.greenColor().CGColor
outerCircle.strokeColor = UIColor.greenColor().CGColor
outerCircleView.layer.addSublayer(outerCircle)
outerCircle.strokeStart = 0.0
outerCircle.strokeEnd = 1.0
vibrancyView.contentView.addSubview(outerCircleView)
innerCircleView.frame.size = frameSize
let innerCirclePadding: CGFloat = 12
innerCircle.path = UIBezierPath(ovalInRect: CGRect(x: innerCirclePadding, y: innerCirclePadding, width: frameSize.width - 2*innerCirclePadding, height: frameSize.height - 2*innerCirclePadding)).CGPath
innerCircle.lineWidth = 4.0
innerCircle.strokeStart = 0.5
innerCircle.strokeEnd = 0.9
innerCircle.lineCap = kCALineCapRound
innerCircle.fillColor = UIColor.greenColor().CGColor
innerCircle.strokeColor = UIColor.greenColor().CGColor
innerCircleView.layer.addSublayer(innerCircle)
Я хотел бы иметь круги менять цвета.
И это будут операции на внешних и внутренних кругах. Понял. Спасибо! Именно то руководство, которое я искал. Я пытался изменить fillColor и strokeColor, но мне нужно использовать эти две функции. Спасибо! Именно то, что я искал. Из любопытства, что делать fillColor и strokeColor, тогда, в коде выше, если вы не возражаете объяснить? –
Что такое _are_ 'innerCircle' и' outerCircle'? Являются ли они, случайно, слоями? Если да, разве вы не думаете, что это может быть хорошей идеей упомянуть об этом факте в вашем вопросе? – matt
Хорошо, так что вы делаете правильно, насколько это возможно. Тогда в чем вопрос? Покажите больше своего кода. Покажите достаточно, чтобы кто-то еще мог пропустить ваш код. И _explain_ в чем проблема: что происходит, когда вы запускаете код, и с другой стороны, вы должны? – matt