UITableView 的子视图与 tableView 的高度不同

Posted

技术标签:

【中文标题】UITableView 的子视图与 tableView 的高度不同【英文标题】:Subview of UITableView does not have same height as tableView 【发布时间】:2016-04-13 23:28:40 【问题描述】:

我在情节提要中有一个带有约束的 tableView,它占据了整个超级视图。在关联 VC 的 viewDidLoad(..) 中,我加载了一个 .xib (UIView),然后将其添加为 tableView 的子视图。

let emptyHomescreenView = EmptyHomescreenView() //The nib is loaded earlier.
self.tableView.addSubview(emptyHomescreenView)

无论如何,我发现 emptyHomeScreenView 的高度比它应该的要长。它被正确放置在 tableView 中,但问题只是高度。我尝试手动将高度设置为与 tableView 相同,但没有变化。我还尝试将 tableView 的 contentInset.bottom 设置为新值,但这也没有改变(奇怪的是 top 确实有效)。

self.tableView.contentInset = UIEdgeInsets(top: 0, left: 0, bottom: -self.navigationController!.toolbar.frame.size.height, right: 0)
//Above line doesn't work, setting a value for top does modify the emptyHomescreenView however.

然后我尝试了

self.edgesForExtendedLayout = UIRectEdge.Bottom

这降低了emptyHomescreenView的高度,但它仍然与navController的底部工具栏不太对齐。

有人知道为什么会这样吗?我正在为 xib 使用自动布局。

编辑Image Here

【问题讨论】:

【参考方案1】:

您的 contentInset 对您的内容造成了双重影响。将 contentInset 的所有值设置为 0。您的 TableView 应该已经与工具栏齐平,并且 tableView 的内容视图是相对于 tableview 的边界测量的,而不是全局视图空间。

【讨论】:

我将 contentInset 值设置为 0,不幸的是 contentView 不是我可以从 tableView 访问的属性。

以上是关于UITableView 的子视图与 tableView 的高度不同的主要内容,如果未能解决你的问题,请参考以下文章

UITableView 的子视图永远不会出现

呈现另一个视图控制器将 UITableView 滚动到顶部

在 UITableview 部分的 Header 视图中从 UIButton 检索部分

UITableView 的子视图不显示

iOS横竖滚动UITableView

UITableView 作为 NIB 中的子视图的问题