установить цвет градиента для эллипса - PullRequest
0 голосов
/ 08 апреля 2019

Мне нужно установить цвет градиента для эллипса.Но я не знаю, как это сделать.Как заполнить эллипс градиентным цветом, а не CGColor.Мой код:

class testView:UIView { 
    override func awakeFromNib() {
        super.awakeFromNib()
    }

    override func draw(_ rect: CGRect) {
        guard let context = UIGraphicsGetCurrentContext() else {
            return
        }
        var gradient:CAGradientLayer = CAGradientLayer()
        gradient.frame               = self.bounds
        gradient.colors              = [UIColor.red.cgColor, UIColor.green.cgColor]
        context.addEllipse(in: rect)
        context.setFillColor(UIColor.blue.cgColor)
        context.fillPath()
    }
}

1 Ответ

0 голосов
/ 08 апреля 2019

Swift 4

Вот копия-вставка из моего текущего проекта. Вы можете адаптировать его для своих целей

var gradientLayer: CAGradientLayer!

func createGradientLayer() {

    var colorIndex: Int = 0

    gradientLayer = CAGradientLayer()
    gradientLayer.frame = self.bounds
    gradientLayer.colors = [myColors[colorIndex][0].cgColor, myColors[colorIndex][1].cgColor]
    gradientLayer.startPoint = CGPoint(x: 1.0, y: 0.0)
    gradientLayer.endPoint = CGPoint(x: 0.0, y: 1.0)

    self.layer.addSublayer(gradientLayer)
}


let myColors: [[UIColor]] = [
    [UIColor.rgb(red: 251, green: 96, blue: 80), UIColor.rgb(red: 192, green: 57, blue: 43)],
    [UIColor.rgb(red: 240, green: 136, blue: 44), UIColor.rgb(red: 211, green: 84, blue: 0)]
]
...