CoreAnimation - определенно ваш лучший выбор. Прошло много времени с тех пор, как я работал с любым кодом CA, но что-то вроде:
[UIView beginAnimations:@"slideOn" context:nil];
firstView.frame = shrunkFirstViewRect; // The rect defining the first view's smaller frame. This should resize the first view
secondView.frame = secondViewOnScreenFrame; // This should move the second view on the frame.
[UIView commitAnimations];
Позже вы можете вернуться к одному виду, используя:
[UIView beginAnimations:@"slideOff" context:nil];
firstView.frame = normalFirstViewRect; // The rect defining the first view's normal frame. This should expand the first view.
secondView.frame = secondViewOffScreenFrame; // Move the second view off the screen
[UIView commitAnimations];
Изменить: приведенный выше код для iPhone, я прочитал ваш вопрос немного быстро.
На Mac вы хотели бы использовать (аналогично):
[NSAnimationContext beginGrouping];
[[NSAnimationContext currentContext] setDuration:1.0f]; // However long you want the slide to take
[[firstView animator] setFrame:shrunkFirstViewRect];
[[secondView animator] setFrame:secondViewOnScreenFrame];
[NSAnimationContext endGrouping];