我有一个基于单元格的NSTableView意外地垂直调整大小,因为我继续向表中添加更多项目。我已经实施了约束,但它们显然已被破坏。
不确定这是否与任何方式有关,但是当NSTableView在常规NSWindow中时我似乎没有这个问题 - 只有当NSTableView在NSPopover中时才会出现问题(我知道NSPopover确实有一个窗口,即myPopover.contentViewController.view.window)。
我已经尝试了很多东西来阻止自动化,但没有任何工作。
如果我没有在NSTableView下面的NSSegmentedControl上放置一个高度约束会发生这种情况(它会被压扁,奇怪的是看起来像NSScrollView调整大小,而不是NSTableView):
如果我在NSSegmentedControl上放置一个高度约束(NSScrollView(height = 155)约束被破坏,并且NSScrollView和NSTableView都调整大小),会发生这种情况:
这是我的约束:
好吧,我有点修复了。通过添加以下代码,我可以阻止NSTableView调整大小,如原始问题的示例GIF中所示。
myTableView.superview.translatesAutoresizingMaskIntoConstraints = NO;
虽然上面的代码阻止NSTableView意外调整大小,但我仍然看到有关NSScrollView高度约束被破坏的错误记录:
[Layout] Unable to simultaneously satisfy constraints:
...
Will attempt to recover by breaking constraint
<NSLayoutConstraint:0x60000212f840 NSScrollView:0x600003d01680.height == 155 (active)>
我可以通过将NSScrollView的高度约束(在原始问题的最后一个屏幕截图中显示)从(height = 155)更改为(height> = 155)来消除此错误。不过,我仍然希望强制NSScrollView和NSTable视图的高度保持在155。
如果没有其他人有答案,我想我会使用此修复程序,直到找到更好的解决方案。
对于那些想知道的人,我在阅读了这个解决方案后得出了这个解决方案:https://www.hackingwithswift.com/example-code/uikit/how-to-stop-auto-layout-and-autoresizing-masks-conflicting-translatesautoresizingmaskintoconstraints