Как показать градиент по диагонали в представлении - PullRequest
0 голосов
/ 03 июля 2019

Я генерирую gradient из 2 UIColors, а затем генерирую UIImage из него с помощью этих функций.

//Function to generate the UIImage from 2 colors.
func createGradient(color1: UIColor, color2: UIColor) -> UIImage {
    let gradientLayer = CAGradientLayer()
    gradientLayer.frame = self.view.bounds
    gradientLayer.colors = [color1.cgColor, color2.cgColor]
    let image = image(from: gradientLayer)
    return image
}

//Function to generate an Image from a CALayer.
func image(from layer: CALayer) -> UIImage {
    UIGraphicsBeginImageContextWithOptions(layer.frame.size, true, 0)
    layer.render(in: UIGraphicsGetCurrentContext()!)
    let outputImage = UIGraphicsGetImageFromCurrentImageContext()
    UIGraphicsEndImageContext()
    return outputImage ?? UIImage()
}

Мой результат такой:

enter image description here

Но я хотел бы показать это по диагонали от верхнего левого угла до нижнего правого угла .... Так что Red должен начинаться с верхнего левого угла и переходить вYellow, когда он идет вниз по диагонали к правому нижнему углу.

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

Спасибо

1 Ответ

2 голосов
/ 03 июля 2019

Просто добавьте startPoint и endPoint к слою градиента:

[...]
gradientLayer.startPoint = .init(x: 0, y: 0) // top left
gradientLayer.endPoint = .init(x: 1, y: 1) // bottom right
[...]
...