如何在不隐藏 TabBar 的情况下呈现具有自下而上动画的 UIViewController

Posted

技术标签:

【中文标题】如何在不隐藏 TabBar 的情况下呈现具有自下而上动画的 UIViewController【英文标题】:How to present a UIViewController with an bottom-up animation without hiding TabBar 【发布时间】:2011-12-16 15:08:19 【问题描述】:

所以,我有一个UITabbarController,里面有一个UINavigationController。按一下按钮,我想引入另一个UINavigationController,像使用presentModalViewController:animated: 时一样对其进行动画处理,但我不希望它隐藏TabBar。

UIKit(3.1.3 及更高版本)中有什么我可以用来做这个的吗,还是我必须自己做动画?

【问题讨论】:

【参考方案1】:

只是测试代码,如果你需要像pushViewController:animated:那样做某事,也许你需要将navigationController设置为property

UIViewController * aViewController = [[UIViewController alloc] init];
[aViewController.view setFrame:self.view.frame];
[aViewController.view setBackgroundColor:[UIColor redColor]];

UINavigationController * navigationController = [[UINavigationController alloc] initWithRootViewController:aViewController];
[aViewController release];
[navigationController.view setFrame:CGRectMake(0.0f, 480.0f, 320.0f, 480.0f)];
[self.navigationController.view addSubview:navigationController.view];

[UIView animateWithDuration:0.3f
                      delay:0.0f
                    options:UIViewAnimationOptionCurveLinear
                 animations:^
                     [navigationController.view setFrame:CGRectMake(0.0f, 0.0f, 320.0f, 480.0f)];
                 
                 completion:nil];
[navigationController release];

【讨论】:

【参考方案2】:

默认情况下,自下而上呈现内容的唯一方法是 presentModalViewController。您实际上可以为您的 navigationController 覆盖动画,但这不是您可以通过调用不同的方法来实现的,您必须创建自己的方法并处理动画。

另一种可能作弊的方法是在您以模态方式呈现的视图中重新加载您的 tabBar,但这可能会变得混乱。

【讨论】:

hm :/ 我想通过导航控制器来做,但似乎不可能将一个导航控制器推到另一个上 您可以在模态视图控制器中加载导航控制器。这种情况经常发生,而且很容易做到。 是的,但我不能使用模态视图控制器,因为模态视图控制器旨在阻止与所有其他 UI 的交互,因此隐藏了 UITabBar。 这并不是要挖掘,但可能值得重新考虑您的 UI。用户习惯于某些类型的导航。您提出的建议违反了规范,可能会使用户感到困惑,并使您的导航(和开发)变得像意大利面条一样。希望你能弄清楚。

以上是关于如何在不隐藏 TabBar 的情况下呈现具有自下而上动画的 UIViewController的主要内容,如果未能解决你的问题,请参考以下文章

如何在不使用 redux 中间件的情况下禁用/隐藏自适应卡片/操作按钮?

是否可以在不着色图标的情况下为 TabBar 着色?

如何在不单击后退按钮的情况下隐藏键盘[重复]

Angular 2:如何在不向用户显示标签的情况下从 JSON 响应呈现 HTML? [复制]

如何在不使用 presentViewController 的情况下以模态方式呈现自定义视图?

如何在不使用表格格式化的情况下呈现获取的数据?