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

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

【讨论】:

以上是关于在不使用导航控制器的情况下转到第二个视图时如何显示动画?的主要内容,如果未能解决你的问题,请参考以下文章

单个标签栏项目根据条件呈现不同的视图控制器?

如何在 xamarin ios 中从一个视图控制器导航到第二个视图控制器?

iOS 13 中第二个视图控制器的导航栏按钮对齐错误

按下页面时执行 Segue

打开 TabBar 子视图

iOS - 如何将选项卡与情节提要中的特定视图控制器链接?