iMessage 扩展 - 需要知道 iMessage 的高度 header

iMessage Extension - need to know the height of the iMessages header

我正在开发 "Cats" iMessage 扩展。 (好吧,我不是,但客户要求我清理我的 SO 问题。)这是我在 tableView 中看到的内容:

如您所见,我的 table 部分 header 在我的搜索栏下方有一个很大的空白。我可以用这段代码轻松解决这个问题。

    self.catsTableView.contentInset = UIEdgeInsetsMake(20, 0, 0, 0)

好吧,几乎很容易,20 岁让我非常担心。你看,20 在不同的设备上是不同的。这是 unacceptable,我不能硬编码设备 table。

我的第一个猜测是尝试调整顶部指南,但它始终为零,或者是一个约束,但我找不到可以调整的!

问:为什么会有差距?

A:因为这是一个iMessage Extension,所以有空隙,空隙的大小正好是上面"Kate" header的大小。您可以在这两个屏幕截图中看到这一点。首先,iPhone7 显示 168px 的间隙正好等于 168px header.:

然后在 iPhone SE 中,显示 126px 的间隙,与 126px 完全匹配 header:

有什么好的、独立于设备的解决方法?

我在 中找到了答案。这是对我有用的代码。

override func viewDidLayoutSubviews() {
    self.recentQuotesTableView.contentInset = UIEdgeInsetsMake(self.topLayoutGuide.length, 0, 0, 0)
}

它适用于所有设备,包括 iPad 拆分视图。