I have created a CAGradientLayer in a layoutSubview. This works, but if I change orientation it seems that the old frame doesn't disappear.
- (void) layoutSubviews
{
CAGradientLayer *bgLayer = [GradientClass getGradient];
bgLayer.frame = [[self.subviews objectAtIndex:0] frame];
[self.layer insertSublayer:bgLayer atIndex:0];
}
Thats because
layoutSubviewsis called again when you rotate the device, causing a secondCAGradientLayerto be created.All you should need to do is just keep a reference to your
CAGradientLayerand just modify its frame.