UITableView 未通过导航栏显示

Posted

技术标签:

【中文标题】UITableView 未通过导航栏显示【英文标题】:UITableView not showing through Navigation Bar 【发布时间】:2014-01-16 14:04:56 【问题描述】:

我有一个UITableView 作为我的自定义UIViewController 的子视图。我想将它放在导航栏下方,当我滚动它时,我希望它通过导航栏以半透明的方式可见。为此,我应该将表格视图的 y 设置为零并将属性edgesForExtendedLayout 设置为UIRectEdgeAll;通过这种方式,事情应该可以工作,因为UITableView 应该设置在导航栏的正下方。 我有一个大问题:如果我将y位置设置为零,则表格视图位于导航栏下方,而第一部分则部分隐藏在半透明栏下方。此外,如果我将 y 位置设置为导航栏的高度,表格视图将永远无法通过导航栏看到,因为它从导航栏下方开始。 实际上,UICollectionView 工作正常,y 位置设置为零,滚动时我可以通过导航栏看到UICollectionView。 关于这个问题的任何建议?这是 ios 7 的错误吗?

【问题讨论】:

我也遇到过这个。在 iOS7 中,如果你在任何 ViewController 的self.view 上添加一个 tableView 作为第一个元素(视图),它就会显示这个问题。您可以使用 hack:在添加 tableView 之前添加一个 ZeroSize 的虚拟 UIView 【参考方案1】:

UITableView 的原点设置为0,然后使用UIViewControllertopLayoutGuide 设置其contentInset

大概是这个样子

self.tableView.contentInset = UIEdgeInsetsMake(self.topLayoutGuide.length, 0, 0, 0);
self.tableView.scrollIndicatorInsets = UIEdgeInsetsMake(self.topLayoutGuide.length, 0, 0, 0);

【讨论】:

以上是关于UITableView 未通过导航栏显示的主要内容,如果未能解决你的问题,请参考以下文章

iOS 通过故事板将 UIView 锁定在导航栏下方和 UITableView 上方

单击导航抽屉引导程序时未显示侧导航栏

故事板中未显示导航栏

导航栏未正确显示

导航栏未显示在嵌入导航控制器中

Xcode 导航栏、标签栏、表格视图标题未显示