在不使用导航控制器的情况下转到第二个视图时如何显示动画?
Posted
技术标签:
【中文标题】在不使用导航控制器的情况下转到第二个视图时如何显示动画?【英文标题】:how show animation when going to second view without using navigate controller? 【发布时间】:2009-12-25 03:06:22 【问题描述】:在我的测试应用程序(即时学习)中,我有 2 个视图控制器。 在第一个视图上,我有“转到第二个视图”按钮。
我想做什么: 当用户单击“转到第二个视图”时,第一个视图向左移动并离开屏幕 第二个视图将从右侧出现并替换第一个视图。
现在,当使用导航控制器推送和弹出时会发生此动画。
我的问题: 我怎么能做同样的动画,没有导航控制器?
【问题讨论】:
【参考方案1】:您可以在右侧添加一个屏幕外视图,然后您可以将其动画到屏幕上的新帧。此方法的另一个常见用途是从底部动画模式菜单视图。您还可以为视图的其他属性设置动画,例如 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];
【讨论】:
以上是关于在不使用导航控制器的情况下转到第二个视图时如何显示动画?的主要内容,如果未能解决你的问题,请参考以下文章