当您使用默认的基于单元格的NSTableView并双击列中的调整大小时,该列将调整为该宽度,即内容中最长的文本。
我必须在基于视图的NSTableView中调用哪些函数才能获得相同的效果?
编辑:我错过的功能是:
func tableView(tableView: NSTableView, sizeToFitWidthOfColumn column:Int) -> CGFloat
但是如何从我的所有stringValues获得最大宽度?
答案 0 :(得分:1)
您可以获取列中所有行的最大宽度,如下所示:
var width: CGFloat = 0
for i in 0...(tableView.numberOfRows-1) {
let view = tableView.viewAtColumn(column, row: i, makeIfNecessary: true) as! NSTableCellView
let size = view.textField!.attributedStringValue.size()
width = max(width, size.width)
}
return width+20 //add an optional padding