iOS中导航栏隐藏后,设置状态栏不透明无效

我在开发中遇到这样一个问题

我设置了导航栏隐藏
self.navigationController.navigationBarHidden = YES;
但是此时,出现了如图的问题,状态栏透明,导致用户体验极差。
为什么向上拉的时候,headerView(关注的主播)会卡在状态栏之下,但是cell确能浸入到状态栏之中呢,我设置了状态栏的背景颜色,也无效。
有人遇到过和我一样的问题么?

向上拉时

初始时

向上拉时

阅读 10.2k
5 个回答

按照苹果的用户设计原则,开发者不应该在状态栏防止任何视图。所以,这样是正常情况。

在你的viewController中设置
self.edgesForExtendedLayout = UIRectEdgeNone;//这样可以不让视图延伸到导航栏(状态栏)下面去

你调整一下 UITableView 的位置,UITableView顶着 NavigationBar就行了。
做下拉刷新的时候,位置也会比较合理一些

我这个类是继承UITableViewController的,所以不管设置self.edgesForExtendedLayout = UIRectEdgeNone;或者在最上面加一个自定义的View去遮盖状态栏的背景都是不管用的,因为这个加的view也会一起滑动,所以我解决办法是重构这个类,让这个类继承UIViewController,然后再加TableView和最上面的小View,这样就解决了我的问题,否则继承UITableViewController的话,导航栏hide之后,对状态栏的一切设置都无效,状态栏永远是透明的。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏