在我的UITableViewControllers中我添加了导航栏,但问题是导航栏的标题与状态栏相交。通常我会做“positionForBar”并返回UIBarPositioningTopAttached,但这只适用于UIViewControllers。因此,我使用“prefersStatusBarHidden”方法返回YES。显然,这给用户带来了成本,因为他们在使用应用程序时无法查看这些屏幕上的时间和电池寿命。那么有没有办法让标题导航栏和状态栏不重叠,有点像在iOS 6中?
这就是我所说的:
它看起来不太干净,我正在尝试解决它
答案 0 :(得分:1)
在故事板中单击您的UITableViewController,然后只需单击编辑 - >嵌入 - >导航控制器。您无需使用它在任何地方导航,但它会为您正确设置标题栏。
答案 1 :(得分:0)
尝试使用代码
self.edgesForExtendedLayout = UIRectEdgeNone;
答案 2 :(得分:0)
我有同样的问题。这修好了: 信用:malcolmhall
它只是推动导航但工作
// in the .h
@property (strong) UINavigationBar* navigationBar;
//in the .m
- (void)viewDidLoad {
[super viewDidLoad];
self.navigationItem.title = @"Title";
self.navigationBar = [[UINavigationBar alloc] initWithFrame:CGRectZero];
[self.view addSubview:_navigationBar];
[self.navigationBar pushNavigationItem:self.navigationItem animated:NO];
}
-(void)layoutNavigationBar{
self.navigationBar.frame = CGRectMake(0, self.tableView.contentOffset.y, self.tableView.frame.size.width, self.topLayoutGuide.length + 44);
self.tableView.contentInset = UIEdgeInsetsMake(self.navigationBar.frame.size.height, 0, 0, 0);
}
-(void)scrollViewDidScroll:(UIScrollView *)scrollView{
//no need to call super
[self layoutNavigationBar];
}
-(void)viewDidLayoutSubviews{
[super viewDidLayoutSubviews];
[self layoutNavigationBar];
}