NSTableView 对齐调整列大小

use*_*901 3 macos resize alignment multiple-columns nstableview

我需要创建一个包含 3 列的 NSTableView,这些列必须适合这样的空间:20% 60% 20%。我在界面生成器中设置了约束,但没有成功。结果总是一样的。显示了 3 列,但大小与 IB 中的大小相同,如果我调整窗口大小,表格也会调整大小,但列保持原始大小。如何根据表格视图大小按比例调整列大小?如何将一列始终右对齐?需要帮助请。我的项目是针对 OS X,而不是 iPhone。提前致谢。

Ken*_*ses 5

我不确定您尝试设置什么约束,但表列不是视图,因此它们不参与自动布局。

对于您想要实现的目标,没有自动支持。NSTableView可以设置为在其列之间均匀分配宽度变化(设置columnAutoresizingStyleNSTableViewUniformColumnAutoresizingStyle),但这并不能保持您想要的比例。

我认为您想要设置表视图,以便它不会调整其列的大小。然后,您将监视其框架的任何变化并自行调整列宽。

您可以在IB中设置表视图的列自动调整大小样式。

要监视框架,您可以使用 的子类NSTableView并覆盖-setFrameSize:,也可以让某些控制器NSViewFrameDidChangeNotification从表视图中观察通知。无论哪种方式,您都需要计算宽度的 20% 和 60%。您可能想要舍入或截断为整数。另外,您应该仅对三列中的两列使用百分比。对于第三个,从表视图的宽度中减去为前两个计算的宽度。这是确保它们全部相加的最简单方法。

对于每一列,检查您计算的宽度是否与其当前宽度不同,如果不同,则设置其宽度。