从黑色到完全透明的快速渐变

时间:2018-05-01 00:28:24

标签: ios swift calayer cagradientlayer

我正在尝试使用swift应用CAGradientLayer,我希望它从黑色渐变到透明。

我认为使用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 :(得分:1)

你可以试试这个:

    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)

它适用于我的情况。