在 UIView 上使用 CAGradientLayer 绘制渐变不起作用
Drawing gradient using CAGradientLayer on UIView not working
我正在尝试在 View Controller 的背景视图上绘制渐变,但由于某种原因我无法让它工作。
这是我的方法,它是从 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];
}
...但是没有任何反应,也没有出现渐变。
我做错了什么?
感谢 Larme 的评论,我弄清楚了我的错误。
而不是
gradient.colors = @[[UIColor greenColor], [UIColor redColor]];
这是对的
gradient.colors = @[(id)[UIColor greenColor].CGColor, (id)[UIColor redColor].CGColor];
因为 gradient.colors
期望 NSArray
为 CGColorRef
。为了创建 NSArray
.
,还需要 (id)
强制转换
我正在尝试在 View Controller 的背景视图上绘制渐变,但由于某种原因我无法让它工作。
这是我的方法,它是从 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];
}
...但是没有任何反应,也没有出现渐变。 我做错了什么?
感谢 Larme 的评论,我弄清楚了我的错误。
而不是
gradient.colors = @[[UIColor greenColor], [UIColor redColor]];
这是对的
gradient.colors = @[(id)[UIColor greenColor].CGColor, (id)[UIColor redColor].CGColor];
因为 gradient.colors
期望 NSArray
为 CGColorRef
。为了创建 NSArray
.
(id)
强制转换