如何在不使用导航控制器的情况下进入第二视图时显示动画

时间:2009-12-25 03:06:22

标签: iphone objective-c animation view

在我的测试应用程序(即时学习)中,我有2个视图控制器。 在第一个视图我有按钮“转到第二个视图”。

我想做什么: 当用户点击“转到第二视图”时,第一个视图向左移动并离开屏幕 第二个视图将从右侧出现并替换第一个视图。

现在,当使用导航控制器推送和弹出时会发生此动画。

我的问题: 如何在没有导航控制器的情况下进行相同的动画?

1 个答案:

答案 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];