有人可以告诉我为什么这段代码没有删除动画的子视图?视图正在堆叠,第二次我关闭视图,它不会动画,现在有两个带有标记99的子视图实例。它没有第一次发布。
for (UIView *subview in [self.smallView subviews]) {
NSLog(@"view:%@",subview);
if (subview.tag == 99) {
[UIView animateWithDuration:.5
animations:^{
subview.alpha = 0;
}
completion:^(BOOL finished){
subview.alpha = 0;
[subview removeFromSuperview];
}];
}
}
以下是我添加子视图的方法,viewVC是一个ViewController子类,smallView是我添加地图的地方,是所有视图的容器。
@property (nonatomic, retain) CustomViewController *viewVC;
viewVC = [self.storyboard instantiateViewControllerWithIdentifier:@"VIEWVC"];
viewVC.view.frame = CGRectMake(20, 20, 280, 371);
viewVC.view.layer.cornerRadius = 15;
viewVC.view.tag = 99;
viewVC.view.alpha = 0;
[self.smallView addSubview:viewVC.view];
[UIView animateWithDuration:.5
animations:^{
viewVC.view.alpha = 1;
}
completion:^(BOOL finished){
viewVC.view.alpha = 1;
}];
答案 0 :(得分:1)
我认为问题可能是你要从正在迭代的数组中删除一个对象,这会导致问题。试试这个:
NSArray *subviews = [NSArray arrayWithArray:[self.smallView subviews]];
for (UIView *subview in subviews) {
NSLog(@"view:%@",subview);
if (subview.tag == 99) {
[UIView animateWithDuration:.5
animations:^{
subview.alpha = 0;
}
completion:^(BOOL finished){
subview.alpha = 0;
[subview removeFromSuperview];
}];
}
}
这样,您就不再从正在迭代的数组中删除对象。
答案 1 :(得分:0)
您能否澄清为什么要检查subview.tag的值为99?是否根本没有调用if语句中的代码?抛出一些NSLog调用,看看你的if语句中的代码是否正在执行。如果是,那么你应该检查你在if语句中调用的方法,并确保它们都没问题。