Как удалить или скрыть подслой?
-(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];
}
}
это позволяет слою появляться, но я не могу удалить его или скрыть его при нажатии той же кнопки.
3 ответов
замените существующий код на этот
-(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];
}
}
в моем случае, когда я добавил несколько подслоев в фоновое изображение, я удалил их все, используя
for (int i = 0 ; i < [self.backgroundImageView.layer.sublayers count]; i++ ) {
[[self.backgroundImageView.layer.sublayers objectAtIndex:i] removeFromSuperlayer];
}
Примечание: я также повторял, как это
for (CALayer *layer in self.backgroundImageView.layer.sublayers) {
[layer removeFromSuperlayer];
}
но это приводит к BadAccess, вероятно, по той причине, что я добавил некоторый CAGradientLayer в backgroundImageView.Слой. (это не правда).
изменить код
- (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];
}}
извините!, повторное решение