ios,导航栏与其内容视图重叠

Posted

技术标签:

【中文标题】ios,导航栏与其内容视图重叠【英文标题】:ios, navigationbar is overlapped with its content view 【发布时间】:2014-10-27 03:34:28 【问题描述】:

我正在展示一个如下所示的视图控制器,并且所展示的视图控制器的内容与它自己的导航栏重叠。

MyViewController *myViewController = [[MyViewController alloc] initWithNibName:nil bundle:nil];
UINavigationController *navigationController = 
    [[UINavigationController alloc] initWithRootViewController:myViewController];

//now present this navigation controller modally 
[self presentViewController:navigationController
                   animated:YES
                   completion:^

                        ];

我可以通过调整 contentView 的框架原点/大小来解决它,但是,有没有更简单的方法?

self.webview 是contentview,我曾经有如下代码让webview 适应整个屏幕-导航栏-状态栏。 (当我只是 pushedViewController 时效果很好)

self.webview.autoresizingMask = (UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight);
[self.view addSubview:self.webview];
self.webview.frame = self.webview.superview.bounds;

【问题讨论】:

可以分享截图吗? @AsifAsif:我添加了它们,上面是当前的错误图像,第二个是所需的图像。 尝试在viewDidLoad中添加这些行:self.navigationController.navigationBar.translucent = YES; self.edgesForExtendedLayout = UIRectEdgeNone; @AsifAsif: 神秘.. 但哇,它奏效了! ..您可以将您的评论移至答案以便我标记它吗? 我实际上在 SO 答案之一中看到了该解决方案,但不相信它会影响我的情况。因为我的导航栏已经是半透明的了.. 【参考方案1】:

请在您的 viewDidLoad 方法中添加以下行:

self.navigationController.navigationBar.translucent = YES; 
self.edgesForExtendedLayout = UIRectEdgeNone;

【讨论】:

以上是关于ios,导航栏与其内容视图重叠的主要内容,如果未能解决你的问题,请参考以下文章

让导航栏与iOS 7中的状态栏重叠

在 iOS 7 中让导航栏与状态栏重叠

iOS11中没有状态栏的导航栏与安全区域重叠

在导航栏iOS 11安全区域下定位视图

Storyboard 应用程序在 iOS 7 上运行正常,但在 iOS 6.1 上导航栏切换视图

导航栏标题视图与左栏按钮项重叠