NSSplitView在NSTabView中的布局问题-缺少约束



我做了一个非常简单的虚拟项目来说明我的问题(使用Xcode 8.1在10.12.1)。我有一个带有2个标签的NSTabViewController的storyboard,其中一个是NSSplitViewController。虽然一切看起来都很完美,但我在运行时看到了以下警告:

"TabSplitViewDummy[3615:89 . 221] [Layout] <_NSSplitViewItemViewWrapper: 0x6000001a0d20]检测到缺少约束。它不能被放置,因为没有足够的约束来完全定义大小和原点。添加缺失的约束,或者设置translatesAutoresizingMaskIntoConstraints=YES,约束将为你生成。如果这个视图是在macOS 10.12或更高版本上手动布局的,你可以选择不调用你的override中的[super layout]。在DETECTED_MISSING_CONSTRAINTS上设置一个断点进行调试。此错误将只记录一次。"

我已经尝试设置translatesAutoresizingMaskIntoConstraints=YES为所有视图以及设置约束-没有工作。到目前为止,我只发现了三件事:

  1. 当我改变选项卡的顺序,使分屏视图在启动时不可见时,没有警告信息
  2. 当我删除选项卡视图并使窗口的分割视图内容时,没有警告消息
  3. 当我在DETECTED_MISSING_CONSTRAINTS上设置一个符号断点时,它会被击中6次,所以我猜有6个缺失的约束

我已经浪费了几天的时间,我在这里错过了什么?

谢谢你的帮助!

GitHub虚拟项目

在几乎失去它之后,我终于找到了解决方案。以防有人遇到同样的麻烦,这里是对我有用的:转到storyboard并将NSTabViewController的"view"出口连接到"No Shadow Tab view"。就是这样。你希望Xcode在你设置一个新的NSTabViewController时那样做,但它没有。我不完全明白为什么,但不知怎的,这和NSSplitView的自动布局搞混了。如果你能详细解释这一点,请在评论中这样做。

最新更新