NSSplitView 与其超级视图之间的高度差距 - 它来自哪里?

Gap in height between NSSplitView and its superview - where is it coming from?

我正在使用故事板构建一个 OS X 应用程序。它的安排使得我的主 window 控制器包含一个 NSSplitViewController 作为其内容视图控制器。

但是,有时,当我打开应用程序时,拆分视图的顶部和 window 的标题栏底部之间存在间隙:

只要我调整 window 的大小,这个差距就会消失。

我捕获了视图层次结构并看到了这些自动布局约束。其中一个看起来特别有趣:

有意思!但是我在我的应用程序中找不到指定这些自动布局约束的任何地方,无论是在 window 还是在拆分视图中。

window 调整大小后,约束看起来像这样(这是在 NSThemeFrame 上):

如果我从 NSSplitView 查看约束,约束不会变灰:

22 的差异是有道理的;那是标题栏本身的高度。

我该怎么做才能找出是什么让它表现得像这样?

问题最终是我需要从内到外开始。首先,我检查了我在框架上为 NSSplitView 的每个视图指定的尺寸。获得这些尺寸后,我便转到 NSSplitView 的框架并相应地设置尺寸。

然后,我去了NSWindow的框架,确保它的尺寸至少和NSSplitView的尺寸一样大。如果它更大,没问题,但如果它更小,那么 window 打开就被切断了。

这可能只是特定于我的用例,因为我尝试创建一个新项目并重现该问题,但无法重现它。