Быстрый градиент от черного до полностью прозрачного - PullRequest
0 голосов
/ 01 мая 2018

Я пытаюсь применить CAGradientLayer, используя swift, и я бы хотел, чтобы он стал бесцветным с черного на прозрачный.

Я думал, что если поставить любой цвет с alpha: 0, получится такой же "прозрачный" цвет. Это не тот случай. Белый с alpha: 0 все еще немного белый, красный с alpha: 0 все еще немного красный ...

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

gradientLayer.colors = [UIColor(hex: 0x000000, alpha: 0.4).cgColor,
                        UIColor(hex: 0x6D6D6D, alpha: 0.3).cgColor,
                        UIColor.white.withAlphaComponent(0.0).cgColor]
gradientLayer.locations = [0.0, 0.3, 1.0]

Если я нанесу слой поверх серого изображения, легко заметить, что он не прозрачный, а белый:

enter image description here

РЕДАКТИРОВАТЬ 1:

gradientLayer.frame = self.gradientView.bounds
gradientLayer.masksToBounds = true
gradientLayer.colors = [UIColor.black.withAlphaComponent(1.0).cgColor, UIColor.black.withAlphaComponent(0.0).cgColor]
gradientLayer.locations = [0.0, 1.0]
gradientLayer.startPoint = CGPoint(x: 0.0, y: 0.0)
gradientLayer.endPoint = CGPoint(x: 0.0, y: 1.0)
self.gradientView.layer.addSublayer(gradientLayer)

Выход:

enter image description here

1 Ответ

0 голосов
/ 01 мая 2018

Вы можете попробовать это:

    gradientLayer.colors = [UIColor.black.withAlphaComponent(1.0).cgColor,
                            UIColor.black.withAlphaComponent(0.0).cgColor]
    //gradientLayer.locations = [0.0, 1.0]
    gradientLayer.frame = myView.frame
    gradientLayer.startPoint = CGPoint(x: 1.0, y: 0.0)
    gradientLayer.endPoint = CGPoint(x: 1.0, y: 1.0)
    myView.layer.insertSublayer(gradientLayer, at: 0)

Это сработало в моем случае.

...