如何制作一个可以覆盖导航栏的UIView?
Posted
技术标签:
【中文标题】如何制作一个可以覆盖导航栏的UIView?【英文标题】:How to make a UIView that can cover the navigation bar? 【发布时间】:2010-08-18 10:44:08 【问题描述】:我想全屏显示UIView
,但显示状态栏,其他东西,比如导航栏需要被UIView
覆盖。
我该怎么做?
【问题讨论】:
【参考方案1】:我相信他要问的是如何让 UIView 覆盖整个屏幕(有点像自定义弹出窗口)。这正是我最终来到这里的原因。所以我会提供我的解决方案。在任何地方调用这个函数。
[self.navigationController.view addSubview:yourUIView];
这里你介绍的视图覆盖了整个屏幕,不像
[self.view addSubview:yourUIView];
因此,导航栏被揭开。
【讨论】:
谢谢字节..它帮助了我..我试图在导航控制器的导航栏中添加视图..它不允许用户交互..但是当我按照你提到的那样做时,它可以工作正如预期的那样.. 这对我很有帮助。是否可以添加动画。就像一个滑下来的动画 @Mr.G 只是偏移yourUIView
的框架,使用UIView
方法+ (void)animateWithDuration:(NSTimeInterval)duration animations:(void (^)(void))animations
@Byte 感谢您的回复。我设法做到了。再次感谢:>
这适用于 ios 7 和 iOS 8。在 iOS 9 上,键盘关闭事件将从层次结构中删除视图。前任。显示警报样式的视图并触发键盘在后台关闭。【参考方案2】:
将视图作为子视图直接添加到主 UIWindow 实例。
【讨论】:
【参考方案3】:有点难以完全理解这个问题,但我想你是在问如何在另一个视图上方显示UIView
(这样带有导航控件的视图完全被第二个视图隐藏)?
UIViewController
有:
- (void)presentModalViewController:(UIViewController *)modalViewController animated:(BOOL)animated
将您的第二个视图也由UIViewController
管理是明智的。例如,假设您的导航栏视图由UINavigationViewController
管理,而您要显示的视图由otherViewController
管理...
[navigationViewController presentModalViewController:otherViewController animated:YES];
【讨论】:
我有一个 UIView 视图,称为“mainUIView”,还有一个称为“subUIView”的 UIView,我希望 subUIView 填充屏幕,状态栏除外。 好的,有两个选择 - 使用 UIViewControllers 并根据需要显示/显示,或者直接将 subUIView 添加为 mainUIView 或应用程序的 UIWindow 的子视图(如下面的 Eiko 建议)。两者都可以,但在不了解您的用例的情况下,我不能说哪个更好/更合适。【参考方案4】:我知道 OP 正在寻找一种完全覆盖导航栏的方法,但您可以暂时隐藏它,而不是覆盖它。隐藏后,您可以将视图添加为子视图并更改其框架或约束,使其占据整个屏幕。
- (void)showViewOverNavBar:(UIView *)view
[self.navigationController setNavigationBarHidden:YES];
[self.view addSubview:view];
【讨论】:
以上是关于如何制作一个可以覆盖导航栏的UIView?的主要内容,如果未能解决你的问题,请参考以下文章