iOS中导航栏隐藏后,设置状态栏不透明无效
我在开发中遇到这样一个问题
我设置了导航栏隐藏self.navigationController.navigationBarHidden = YES;
但是此时,出现了如图的问题,状态栏透明,导致用户体验极差。
为什么向上拉的时候,headerView(关注的主播)会卡在状态栏之下,但是cell确能浸入到状态栏之中呢,我设置了状态栏的背景颜色,也无效。
有人遇到过和我一样的问题么?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
按照苹果的用户设计原则,开发者不应该在状态栏防止任何视图。所以,这样是正常情况。
在你的viewController中设置
self.edgesForExtendedLayout = UIRectEdgeNone;//这样可以不让视图延伸到导航栏(状态栏)下面去
你调整一下 UITableView 的位置,UITableView顶着 NavigationBar就行了。
做下拉刷新的时候,位置也会比较合理一些
我这个类是继承UITableViewController的,所以不管设置self.edgesForExtendedLayout = UIRectEdgeNone;或者在最上面加一个自定义的View去遮盖状态栏的背景都是不管用的,因为这个加的view也会一起滑动,所以我解决办法是重构这个类,让这个类继承UIViewController,然后再加TableView和最上面的小View,这样就解决了我的问题,否则继承UITableViewController的话,导航栏hide之后,对状态栏的一切设置都无效,状态栏永远是透明的。
设置一下当前视图控制器:self.automaticallyAdjustsScrollViewInsets=false;
self.tableView=[[UITableView alloc]initWithFrame:CGRectMake(0,20,SCREENW,SCREENH-69) style:UITableViewStylePlain];
就ok