在UIView上使用CAGradientLayer绘制渐变无法工作

8
我可以为您进行翻译。以下是您需要翻译的内容:

我正在尝试在视图控制器的背景视图上绘制渐变,但因为某些原因我无法使其正常工作。

这是我的方法,它从 viewDidLoad 被调用:

- (void)drawGradient
{
  CAGradientLayer *gradient = [CAGradientLayer layer];
  gradient.frame = self.view.bounds;

  gradient.colors = @[[UIColor greenColor], [UIColor redColor]];
  gradient.locations = @[@0.0, @1.0];

  [self.view.layer insertSublayer:gradient atIndex:0];
}

我做了什么不对的事情吗?因为没有任何效果,渐变也没有出现。


1
colors 等待一个 NSArrayCGColorRef,而不是 UIColor,对吗? - Larme
是的,你说得对。非常感谢你。 - WedgeSparda
1个回答

15
感谢 Larme 的评论,我找到了我的错误。
而不是
gradient.colors = @[[UIColor greenColor], [UIColor redColor]];

正确的是这个

gradient.colors = @[(id)[UIColor greenColor].CGColor, (id)[UIColor redColor].CGColor];

因为gradient.colors需要一个NSArrayCGColorRef,所以(id)强制转换也是必须的,以创建NSArray


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接