我有一个基于单元格的NSTableView,它在继续向表中添加更多项时意外地垂直调整大小。我已经实施了约束,但是显然已经被打破了。
不确定是否以任何方式相关,但是当NSTableView位于常规NSWindow中时,我似乎没有此问题-仅当NSTableView位于NSPopover中时,此问题才会发生(我知道NSPopover确实具有一个窗口,即myPopover.contentViewController.view.window)。
我尝试了多种方法来停止自动调整大小,但是没有任何效果。
如果我没有在NSTableView下方的NSSegmentedControl上设置高度限制,则会发生这种情况(它被挤压,奇怪的是似乎是NSScrollView调整大小,而不是NSTableView):
如果我在NSSegmentedControl上放置了一个高度约束(NSScrollView(高度= 155)约束被打破,并且NSScrollView和NSTableView都调整了大小),就会发生这种情况:
这是我的限制条件:
答案 0 :(得分:0)
好吧,我已经解决了这个问题。通过添加以下代码,可以防止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