状态栏与 UITableView 混合

Status bar mixes in with UITableView

我有 UITableviewController,它包含顶部的搜索栏和下面的 table 行。我已将导航栏设置为隐藏,并将视图放置在距离顶部 20 像素的位置以说明状态栏。

    - (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)];
        }}

这行得通。首次加载视图时,状态栏和视图显示正常。

但是,如果我点击 table 行之一,则会转换到新的推送视图。从新视图返回到包含 table 视图的视图后,状态栏与 tableviewcontroller 视图混合在一起。

调用了viewdidappear但是没有效果。有更好的方法吗?在我的其他视图之一中,我在故事板中手动添加了 20 px。但是,对于这个 tableviewcontroller,我想不出一个办法。欢迎提出任何建议。

这对我有用。

    - (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];
    }

用一个 UIViewController 代替 tableViewController,在里面用一个 searchBar 在上面,在下面用一个 tableView 这可能会解决你的问题