You should use the newer block methods. They have built-in completion blocks that will be executed once the animation completes.
EDIT: For your situation, use the one where you can give options to use that animationCurve:
[UIView animateWithDuration:0.5
delay:0.0
options:UIViewAnimationOptionCurveEaseIn
animations:^{
button2.transform = CGAffineTransforMakeTranslation(0, 520);
} completion:^(BOOL finished) {
[self switchtoview2];
}];