У меня есть UIView с несколькими добавленными UILabels.Я просто перемещаю их все в центр экрана с анимацией, а затем пытаюсь удалить их из суперпредставления в обработчике завершения анимации.
for (label in [self.view subviews])
{
if([label isKindOfClass:[UILabel class]])
{
CGRect frame = CGRectMake(self.view.frame.size.width/2, self.view.frame.size.height/2, label.frame.size.width, label.frame.size.height);
[UIView animateWithDuration:2.0
delay:0.0
options: UIViewAnimationOptionCurveEaseInOut
animations:^{
[self->label setFrame:frame];
}
completion:^(BOOL finished){
dispatch_async(dispatch_get_main_queue(),^{
[self->label removeFromSuperview];
});
}
];
}
}
Проблема, с которой я сталкиваюсь, заключается в том, чтоВ конце анимации UILabels остаются.Если я помещу вызов removeFromSuperView вне блока анимации, он будет работать, но, конечно, они будут удалены до того, как анимация сможет завершиться.