ios - 状态栏与 UITableView 混合在一起

标签 ios objective-c uitableview uinavigationcontroller statusbar

我有 UITableviewController,它在顶部包含一个搜索栏,在下面包含表格行。我已将导航栏设置为隐藏,并将 View 放置在距离顶部 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)];
        }}

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

view after first load

但是,如果我点击其中一个表格行,则会转换到新的推送 View 。从新 View 返回到包含 tableview 的 View 后,状态栏与 tableviewcontroller View 混合在一起。

view after second load

调用了 viewdidappear 但没有任何效果。有更好的方法吗?在我的其他 View 之一中,我在 Storyboard中手动添加了 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];
    }

关于ios - 状态栏与 UITableView 混合在一起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39839813/

相关文章:

ios - 如何使用 Core Data 制作索引列表 TableView ,iOS Dev

iOS - 通过 segue 发送发送者链接变量

ios - 具有有限单元格的 Collection View 滚动

iOS : Losing Bluetooth Connection

ios - 如何使用文件归档存储 NSObject 类的对象

ios - 自定义单元格中的按钮现在显示

ios - 如何根据日期对 tableView 进行排序?

ios - 如何将 UIView socket 连接到自定义 subview

ios - 使用 facebook 登录时遇到问题

ios - 无法将项目从 Storyboard拖放到 xcode 中的 View Controller