【问题标题】:adding a gradient sublayer over the root layer在根层上添加一个渐变子层
【发布时间】:2014-09-19 22:12:45
【问题描述】:

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

    // 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);

我希望它在图像顶部显示渐变颜色。下面的代码根本没有显示任何内容。您可以推荐我尝试什么?

【问题讨论】:

    标签: ios swift calayer


    【解决方案1】:

    我自己解决了这个问题。问题的发生是因为这行:

    gradientLayer.frame = coverView.bounds;
    

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

    CAGradientLayer 颜色属性也不喜欢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);
    

    【讨论】:

    • 你可能需要设置 gradientLayer.frame = coverView.layer.bounds; 以获得正确的输出
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多