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
layoutSubviews
is called again when you rotate the device, causing a secondCAGradientLayer
to be created.All you should need to do is just keep a reference to your
CAGradientLayer
and just modify its frame.