2

我使用以下代码设置渐变颜色:

NSArray *locations = @[@0.0, @0.1f];

CAGradientLayer *headerLayer = [CAGradientLayer layer];
headerLayer.colors = colors;
headerLayer.locations = locations;

如何制作径向渐变颜色?

我想我必须改变位置,但我没有猜到正确的位置。另外,我试过这个:

headerLayer.anchorPoint = CGPointMake(0.5, 1.0);

但它不起作用。

谢谢。

4

3 回答 3

15

到 2019 年,接受的答案是错误的,您可以通过将其 type 属性设置为 .radial 来制作径向渐变。重要的是 startPoint 是椭圆或圆的中心的坐标,而 endPoint 是外日食或圆的尺寸。所有坐标都必须以单位表示(又名 1.0 是 100%)。

以下 Swift 示例将绘制一个位于框架中心的椭圆,并设置半径以匹配框架:

    let g = CAGradientLayer()

    // We want a radial gradient
    g.type = .radial

    g.colors = [UIColor.clear.cgColor, UIColor.black.cgColor]

    let center = CGPoint(x: 0.5, y: 0.5)        
    g.startPoint = center

    let radius = 1.5
    g.endPoint = CGPoint(x: radius, y: radius)

例如,上面的示例可用于向视图添加小插图(参见图片)。

请注意,半径可以大于框架,并且中心也可以通过指定大于 1 或小于 -1 的坐标放置在框架之外。

在此处输入图像描述

于 2019-07-20T21:40:12.757 回答
1

您无法初始化径向 CAGradientLayer,但您可以轻松地将当前图层样式修改为径向

layer.type = .radial
于 2019-01-21T16:23:18.167 回答
-2

更新:

似乎确实如此,其他答案显示了该方法。


不幸的是,CAGradientLayer不支持径向渐变。做到这一点的唯一方法是子类CALayer化并自己进行绘图。

我已经在这里回答了这个问题,但由于这是一个较旧的问题,另一个问题可能是重复的。

于 2014-11-14T07:28:31.703 回答