我有UITableviewController,它包含顶部的搜索栏和下面的表行。我已将导航栏设置为隐藏,并将视图从顶部放置20 px以占据状态栏。
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
self.navigationController.navigationBar.hidden = YES;
UIApplication *app = [UIApplication sharedApplication];
if(!app.statusBarHidden) {
[self.view setFrame:CGRectMake(0.0,app.statusBarFrame.size.height, self.view.bounds.size.width, self.view.bounds.size.height - app.statusBarFrame.size.height)];
}}
这很有效。首次加载视图时,状态栏和视图显示正常。
但是,如果我点击其中一个表格,则会转换为新的推送视图。从新视图返回到包含tableview的视图时,状态栏与tableviewcontroller视图混合。
调用viewdidappear但它没有效果。有没有更好的方法呢?在我的其他一个视图中,我在故事板中手动添加了20 px。但是,使用这个tableviewcontroller,我无法找到一种方法。欢迎任何建议。
答案 0 :(得分:1)
这对我有用。
- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
self.navigationController.navigationBar.hidden = YES;
if ([[UIDevice currentDevice].systemVersion floatValue] >= 7){
self.tableView.contentInset = UIEdgeInsetsMake(20, 0, 0, 0);
}
[self.tableView scrollRectToVisible:CGRectMake(0, 0, 1, 1) animated:YES];
}
答案 1 :(得分:0)
而不是tableViewController取一个UIViewController,里面拿一个searchBar在它上面,一个tableView下面就可以解决你的问题