在根层上添加渐变子图层

时间:2014-09-19 22:12:45

标签: ios swift calayer

我需要从上到下将渐变色从透明变为黑色,不透明度为30%。我发现最好的方法是使用CAGradientLayer。我想在“根”层之上添加该层,以避免为此创建单独的视图。对于我来说,拥有多个层而不是多个UIViews更有意义。到目前为止,这是我写的没有运气。

    // view did load
    var gradientLayer : CAGradientLayer = CAGradientLayer();
    gradientLayer.frame = coverView.bounds;
    gradientLayer.colors = [UIColor.redColor(), UIColor.blueColor()];
    coverView.layer.insertSublayer(gradientLayer, above: coverView.layer);
    // also tried below
    // coverView.layer.insertSublayer(gradientLayer, atIndex: 0);

我希望这能在图像上显示渐变色。下面的代码根本没有显示任何内容。你能建议我尝试一下吗?

1 个答案:

答案 0 :(得分:6)

我自己解决了这个问题。问题发生在线:

gradientLayer.frame = coverView.bounds;

coverView.bounds给出完全不同的输出。使用coverView.layer.frame确实使图层成为父图层的大小。

CAGradientLayer colors属性也不喜欢UIColor;使用CGColor解决了这个问题。我使用了带有atIndex属性的函数。这是最终的代码:

var gradientLayer : CAGradientLayer = CAGradientLayer();
gradientLayer.frame = coverView.layer.frame;
gradientLayer.colors = [UIColor.clearColor().CGColor!, UIColor.blackColor().CGColor!];
gradientLayer.startPoint = CGPointMake(0.5, 0.0);
gradientLayer.endPoint = CGPointMake(0.5, 1.0)
gradientLayer.opacity = 0.8;
coverView.layer.insertSublayer(gradientLayer, atIndex: 0);