tags:

views:

26

answers:

1

I have a UIView & I want that view's layer to be a continuously looping animation but I'm having some trouble getting started. I have the following in my view subclass:

+ (Class)layerClass {

return [CALayer class];

}

Then in my viewController I have:

CAGradientLayer *gradient = [CAGradientLayer layer];
[gradient setColors:[NSArray arrayWithObjects:[UIColor redColor],[UIColor blueColor],nil]];
[[[self view] layer] addSublayer:gradient];

This crashes my app. What exactly am I doing wrong? The app crashes w/ EXC_BAD_ACCESS.

+1  A: 

You forget to specify the locations for colors. By default, the location is nil.

CAGradientLayer *gradient = [CAGradientLayer layer];
[gradient setColors:[NSArray arrayWithObjects:
          [UIColor redColor],
          [UIColor blueColor],
          nil]];

[gradient setLocations:
          [NSNumber numberWithFloat:0.0],  // for redColor
          [NSNumber numberWithFloat:1.0],  // for blueColor
          nil]];

[[[self view] layer] addSublayer:gradient];
Toro