CAGradientLayer径向渐变

时间:2014-04-18 13:53:34

标签: objective-c uiview cagradientlayer

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

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

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

如何制作径向渐变色?

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

headerLayer.anchorPoint = CGPointMake(0.5, 1.0);

但它不起作用。

感谢。

3 个答案:

答案 0 :(得分:3)

不幸的是,CAGradientLayer不支持径向渐变。唯一的方法是继承CALayer并自己完成绘图。

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

答案 1 :(得分:0)

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

layer.type = .radial

答案 2 :(得分:0)

到2019年,可接受的答案是错误的,您可以通过将其type属性设置为.radial来进行径向渐变。 重要的是,起点是椭圆或圆形中心的坐标,终点是外部椭圆或圆形的尺寸。所有坐标必须以基于单位的形式表示(aka 1.0为100%)。

下面的Swift示例将绘制一个椭圆,该椭圆位于框架的中心,其半径设置为与框架匹配:

> df[,columns_sampled]
   X9 X4
1   1  1
2   1  1
3   0  1
4   0  1
5   0  0
6   1  1
7   1  1
8   1  0
9   0  0
10  1  1

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

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

enter image description here