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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了让导航栏与iOS 7中的状态栏重叠相关的知识,希望对你有一定的参考价值。

我想创建一个使用导航栏的应用程序,但仅用于显示标题和一些按钮(它使用的是vie容器)。我希望导航栏与状态栏“融合”,就像这样

但是,当我使用通用视图控制器并在其中拖动导航栏时,看起来像这样:

有没有办法做到这一点?

答案

我找到了解决这个特定问题的方法。将导航栏的半透明属性设置为NO:

 self.navigationController.navigationBar.translucent = NO;
另一答案

UINavigationController会将其UINavigationBar的高度更改为44点或64点,具体取决于一组相当奇怪且未记录的约束。如果UINavigationController检测到其视图框架的顶部与UIWindow的顶部在视觉上是连续的,那么它将绘制高度为64点的导航栏。如果它的视图顶部与UIWindow的顶部不连续(即使只关闭一个点),那么它以“传统”方式绘制其导航栏,高度为44点。即使在应用程序的视图控制器层次结构中有多个子项,UINavigationController也会执行此逻辑。没有办法阻止这种行为。

完整的解释here

另一答案

不确定这是否会解决您的问题,但您可以尝试我所做的。

我在viewcontroller右侧菜单“Simulated Metrics”> Top Bar>“Opaque Navigation Bar”中遇到了同样的问题

另一答案
  • viewcontroller.h文件在导航栏的create iboutlet中 @property (weak, nonatomic) IBOutlet UINavigationBar *navBar;
  • 您可以在viewDidLoad中执行以下操作 UIView * addStatusBar = [[UIView alloc] init]; //绘制状态栏,其宽度为设备addStatusBar.frame = CGRectMake(0,-20,self.view.frame.size.width,20); //将背景颜色设置为状态栏 addStatusBar.backgroundColor = [UIColor colorWithRed:24.0 / 255。绿色:二百五十五分之二十四。蓝色:24.0 / 255。阿尔法:1]; [self.view addSubview:addStatusBar]; //将状态栏添加到您的文件中声明的UINavigationBar * navBar。[self.navBar addSubview:addStatusBar];
另一答案
navigationController.navigationBar.clipsToBounds = YES;

为了使UINavigationBar在状态栏下扩展其背景,其clipsToBounds必须设置为NO(这是默认值)。确保你不要嘲笑它。

解决方案简单如下: -

navigationController.navigationBar.clipsToBounds = NO;
另一答案

斯威夫特5

navigationController?.navigationBar.isTranslucent = false

以上是关于让导航栏与iOS 7中的状态栏重叠的主要内容,如果未能解决你的问题,请参考以下文章

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

iOS 7 状态栏与 UIImagePickerController 上的相机控件重叠

IBM Worklight - iOS 7 状态栏与应用程序的 HTML 重叠

Xamarin Forms - 状态栏与 IOS 中的内容重叠(safeareainsets 问题)

iOS11中如何设置导航栏与ViewController内容重叠

如何修复 iOS 7 中的状态栏重叠问题