ios UITableViewController重叠状态栏

时间:2015-05-15 20:36:00

标签: ios uitableview

我有一个简单的标签式应用程序,其第一个标签是UITableViewController。填充一些数据后,我注意到表格视图的顶部与状态栏重叠。

我已经尝试弄乱edgesForExtendedLayout和类似的设置,但还没有找到神奇的组合。有谁知道如何纠正这个?

重现的步骤:

  1. 创建新的选项卡式应用程序
  2. 删除第一个标签UIViewController并将其替换为UITableViewController
  3. 使用某些数据填充UITableView
  4. 运行应用程序
  5. 以下是设置和问题的几个屏幕截图: Xcode Storyboard UITableView overlapping status bar

2 个答案:

答案 0 :(得分:28)

只需修改表格视图的contentInset属性,即可在内容周围添加一些填充。在viewDidLoad()中添加以下内容:

tableView.contentInset.top = 20

在Objective-C中,你不能直接分配到顶部,所以这样做:

self.tableView.contentInset = UIEdgeInsetsMake(20, 0, 0, 0);

当然它可以是任意值,在这种情况下,它是状态栏的高度。

答案 1 :(得分:4)

正如评论中所建议的,一种方法是(在Swift 3中):

override func viewDidLoad() {
    super.viewDidLoad()
    tableView.contentInset.top = UIApplication.shared.statusBarFrame.height
}

但那并不干净。最好embed the UITableViewController in a UINavigationController(编辑器>嵌入>导航控制器)并取消选中"显示导航栏"在检查员。不需要调整!