How to remove or hide a sublevel?

-(IBAction)displayinfo:(id)sender { sublayer = [CALayer layer]; if (appear == NO) { appear = YES; sublayer.contents=(id)[UIImage imageNamed:@"infoPalette.png"].CGImage; sublayer.frame= CGRectMake(300,200,350,250); [self.view.layer addSublayer:sublayer]; } else { [sublayer removeFromSuperlayer]; } } 

This allows me to display a layer, but I cannot delete it or hide it by clicking on the same button.

+6
source share
3 answers

Replace existing code with this

 -(IBAction)displayinfo:(id)sender { if ( appear == NO) { sublayer = [CALayer layer]; appear = YES; sublayer.contents=(id)[UIImage imageNamed:@"infoPalette.png"].CGImage; sublayer.frame= CGRectMake(300,200,350,250); [self.view.layer addSublayer:sublayer]; } else { [sublayer removeFromSuperlayer]; } } 
+11
source

In my case, when I added several sublayers to the background image, I deleted them all using

  for (int i = 0 ; i < [self.backgroundImageView.layer.sublayers count]; i++ ) { [[self.backgroundImageView.layer.sublayers objectAtIndex:i] removeFromSuperlayer]; } 

Note. I also repeated this

  for (CALayer *layer in self.backgroundImageView.layer.sublayers) { [layer removeFromSuperlayer]; } 

but this leads to BadAccess, probably for the reason that I added some CAGradientLayer to backgroundImageView.Layer. (that doesn't make much sense, though).

+5
source

You change the code

 - (IBAction)displayinfo:(id)sender{ if (appear == NO){ sublayer = [CALayer layer]; appear = YES; sublayer.contents=(id)[UIImage imageNamed:@"infoPalette.png"].CGImage; sublayer.frame= CGRectMake(300,200,350,250); [self.view.layer addSublayer:sublayer]; } else { [sublayer removeFromSuperlayer]; }} 

Sorry, re-solution

0
source

Source: https://habr.com/ru/post/959230/


All Articles