NSTableView意外调整大小

问题描述 投票:2回答:1

我有一个基于单元格的NSTableView意外地垂直调整大小,因为我继续向表中添加更多项目。我已经实施了约束,但它们显然已被破坏。

不确定这是否与任何方式有关,但是当NSTableView在常规NSWindow中时我似乎没有这个问题 - 只有当NSTableView在NSPopover中时才会出现问题(我知道NSPopover确实有一个窗口,即myPopover.contentViewController.view.window)。

我已经尝试了很多东西来阻止自动化,但没有任何工作。

如果我没有在NSTableView下面的NSSegmentedControl上放置一个高度约束会发生这种情况(它会被压扁,奇怪的是看起来像NSScrollView调整大小,而不是NSTableView):

enter image description here

如果我在NSSegmentedControl上放置一个高度约束(NSScrollView(height = 155)约束被破坏,并且NSScrollView和NSTableView都调整大小),会发生这种情况:

enter image description here

这是我的约束:

enter image description here

objective-c autolayout nstableview
1个回答
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

© www.soinside.com 2019 - 2024. All rights reserved.