在我的测试应用程序(即时学习)中,我有2个视图控制器。 在第一个视图我有按钮“转到第二个视图”。
我想做什么: 当用户点击“转到第二视图”时,第一个视图向左移动并离开屏幕 第二个视图将从右侧出现并替换第一个视图。
现在,当使用导航控制器推送和弹出时会发生此动画。
我的问题: 如何在没有导航控制器的情况下进行相同的动画?
答案 0 :(得分:2)
您可以在屏幕右侧添加视图,然后可以在屏幕上将其设置为新框架的动画。此方法的另一个常见用途是从底部为模式菜单视图设置动画。您还可以为视图的其他属性设置动画,例如alpha值,以使视图消失/重新出现。
// the size of the screen minus the Status Bar
#define SCREEN_FRAME [[UIScreen mainScreen] applicationFrame]
// add the full-screen view offscreen to the right
CGRect frame = CGRectMake(SCREEN_FRAME.size.width,
SCREEN_FRAME.origin.y,
SCREEN_FRAME.size.width,
SCREEN_FRAME.size.height);
UIView *view = [[[UIView alloc]initWithFrame:frame]autorelease];
[self.view addSubview view];
// this is the frame the view will end on after the animation
CGRect newFrame = CGRectMake(SCREEN_FRAME.origin.x,
SCREEN_FRAME.origin.y,
SCREEN_FRAME.size.width,
SCREEN_FRAME.size.height);
// animate the transition
[UIView beginAnimations:nil context: nil];
[UIView setAnimationDuration: .5];
view.frame = newFrame;
[UIView commitAnimations];