有人能告诉我为什么这段代码没有移除动画中的子视图吗?视图堆叠在一起,第二次关闭视图时,它不会显示动画,现在有两个标记为99的subView实例。它并不是第一次发布的。
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;
}];发布于 2012-08-24 22:21:58
我认为问题可能是您正在从您正在迭代的数组中删除一个对象,这将导致问题。试试这个:
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];
}];
}
}这样,您就不再需要从正在迭代的数组中移除对象。
发布于 2012-08-24 22:25:47
您能澄清一下为什么要检查subview.tag的值为99吗?有没有可能根本没有调用if语句中的代码?添加一些NSLog调用,看看if语句中的代码是否正在执行。如果是,那么您应该检查在If语句中调用的方法,并确保它们都是正确的。
https://stackoverflow.com/questions/12111030
复制相似问题