4

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

导航栏和状态栏

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

没有

有没有办法做到这一点?

4

6 回答 6

3

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

 self.navigationController.navigationBar.translucent = NO;
于 2013-09-10T12:31:13.253 回答
1

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

完整的解释在这里

于 2013-09-17T17:33:07.813 回答
0
  • viewcontroller.h 文件中创建导航栏的 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/255。蓝色:24.0/255。阿尔法:1];

    [self.view addSubview:addStatusBar];

    // 将您的状态栏添加到您在文件中声明的 UINavigationBar *navBar .h [self.navBar addSubview:addStatusBar];

于 2015-01-22T07:49:02.980 回答
0

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

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

于 2013-09-12T11:34:50.277 回答
0

斯威夫特 5

navigationController?.navigationBar.isTranslucent = false
于 2019-04-10T18:32:23.870 回答
0
navigationController.navigationBar.clipsToBounds = YES;

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

解决方案简单如下: -

navigationController.navigationBar.clipsToBounds = NO;
于 2017-07-24T18:26:31.337 回答