NSTableView对齐调整大小列

时间:2014-09-29 16:44:53

标签: macos resize alignment nstableview multiple-columns

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

1 个答案:

答案 0 :(得分:4)

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

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

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

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

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

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