I am trying to add a gradient layer to my view, first time when I run the code it inserts the layer perfectly but every 10 sec I run the same function again to change the layer but it doesn't update the layer.
if ([[self.view.layer sublayers] count]>1) {
CAGradientLayer *gradientLayer=[ColorUtilities randomGradient];
gradientLayer.frame = CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height);
[self.view.layer insertSublayer:gradientLayer atIndex:0];
//[self.view.layer replaceSublayer:[[self.view.layer sublayers] objectAtIndex:0] with:gradientLayer];
}
here [ColorUtilities randomGradient]
gives me a random layer every time.
why layer atindex:0
is not updated?
@dominikweifieg comment is somewhat valid. Just keep a flag that if you added the layer first time then replace the sublayer after that
something like this should work
-(void)updateGradientLayer
{
//isFirstTimeInserting is a global BOOL
if (isFirstTimeInserting==YES) {
CAGradientLayer *gradientLayer=[ColorUtilities randomGradient];
gradientLayer.frame = CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height);
[self.view.layer insertSublayer:gradientLayer atIndex:0];
isFirstTimeInserting=NO;
}
else
{
if ([[self.view.layer sublayers] count]>=1) {
CAGradientLayer *gradientLayer=[ColorUtilities randomGradient];
gradientLayer.frame = CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height);
[self.view.layer insertSublayer:gradientLayer above:[[self.view.layer sublayers] objectAtIndex:0]];
}
}
}