不显示导航栏的非透明状态栏

时间:2018-07-11 07:45:33

标签: ios objective-c xcode uinavigationbar

我正在尝试隐藏导航栏,并使用非透明状态栏。但是,出于某种原因,我只能限制不要为状态栏背景创建UIView

问题是我将导航栏设置为隐藏后状态栏变得透明,并且在表视图滚动中重叠。

-(void)viewWillAppear:(BOOL)animated
{
    [self.tableView reloadData];
    [[self navigationController] setNavigationBarHidden:YES animated:NO];
}

我想知道如何在不为单个UIViewController的背景创建UIView的情况下使状态栏不透明(不是为所有控制器创建UIView,因为我希望它在某些情况下是透明的)。

1 个答案:

答案 0 :(得分:0)

您不能,状态栏本身始终是透明的。 HIG中与您相关的替代方法:

  
      
  • 在状态栏后面显示自定义图像,例如渐变色或纯色。
  •   
  • 在状态栏后面放置一个模糊的视图。有关开发人员的指导,请参见UIBlurEffect。
  •   

您提到表格视图滚动。可能是您有UITableViewController,这意味着您无法将子视图添加到viewController.view。您可以创建一个自定义容器视图控制器,将视图添加到状态栏下,请参见UIViewController documentation中的实施容器视图控制器部分。然后,将您的视图控制器嵌套在此容器中。