I'm trying to draw a gradient on the background view of a View Controller with but for some reason I couldn't get it to work.
Here is my method, which is called from 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];
}
...but nothing happens, and the gradient doesn't appear. What am I doing wrong?
Thanks to Larme's comment, I figured out my mistake.
Instead of
gradient.colors = @[[UIColor greenColor], [UIColor redColor]];
the right this is
gradient.colors = @[(id)[UIColor greenColor].CGColor, (id)[UIColor redColor].CGColor];
Because gradient.colors
expects a NSArray
of CGColorRef
. The (id)
cast is also needed in order to create the NSArray
.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With