Animating removeFromSuperview

user230949 picture user230949 · Jan 5, 2010 · Viewed 34.8k times · Source

I'd like to animate the transition from a subview back to the super view.

I display the subview using:

[UIView beginAnimations:@"curlup" context:nil];
[UIView setAnimationDelegate:self];
[UIView setAnimationDuration:.5];
[UIView setAnimationTransition:UIViewAnimationTransitionCurlUp forView:self.view cache:YES];
[self.view addSubview:self.mysubview.view];
[UIView commitAnimations];

The above works fine. It's going back to the super view that I don't get any animation:

[UIView beginAnimations:@"curldown" context:nil];
[UIView setAnimationDelegate:self];
[UIView setAnimationDuration:.5];
[UIView setAnimationTransition:UIViewAnimationTransitionCurlDown forView:self.view cache:YES];
[self.view removeFromSuperview];
[UIView commitAnimations];

Is there something different I should be doing to get the subview to animate when removed?

Answer

JosephH picture JosephH · Apr 28, 2011

If you're targeting iOS 4.0 upwards you can use animation blocks instead:

[UIView animateWithDuration:0.2
     animations:^{view.alpha = 0.0;}
     completion:^(BOOL finished){ [view removeFromSuperview]; }];

(above code comes from Apple's UIView documentation)