【发布时间】:2016-10-04 12:17:21
【问题描述】:
10.12 中有几个巨大的变化,但在我看来,最大的变化是新的自动布局系统(或修改/重写的旧系统......谁知道呢)。我准备了一个简单的项目来演示这个问题。它与通过按钮折叠拆分视图项目有关。它仅在 10.12 发生。您需要做的就是编译项目并单击按钮。会报错:
2016-10-04 15:10:28.284296 test-12[64932:7425277] [布局] 检测到 .无法放置,因为没有足够的约束来完全定义大小和原点。添加缺少的约束,或设置 translatesAutoresizingMaskIntoConstraints=YES 并且将为您生成约束。如果此视图在 macOS 10.12 及更高版本上手动布局,您可以选择不从覆盖中调用 [super layout]。在 DETECTED_MISSING_CONSTRAINTS 上设置断点进行调试。此错误只会记录一次。
设置断点后我们可以发现有问题的视图是:
(lldb) po $arg1
<NSSplitDividerView: 0x618000161980>
我是完全错了还是 10.12 确实存在问题?如果可能,请建议如何防止此类错误。
项目可以从github下载
再次感谢您的帮助。
我。尼科洛夫
【问题讨论】:
-
我可以通过调用 NSAlert.layout() 来触发此消息,强制警报立即自行布局。由于在这种情况下没有任何建议有效,并且没有明显的方法来避免错误,我提交了一个雷达 (rdar://28700495)。
-
我通过在我的
NSSplitViewController中从splitView(_ splitView: NSSplitView, shouldHideDividerAt dividerIndex: Int) -> Bool返回false来解决此问题。 -
@LShi:谢谢我遇到了同样的问题,它也对我有用。
-
@Lshi 您应该发布您的修复作为答案。它对我有用。
-
嗨,目前我的项目中没有使用这个“hack”,也没有错误了。你的 macOS 版本是什么?我的是10.13。这什么时候发生?在启动时或切换 splitviewitem/sidebar 时?
标签: macos-sierra