NSCollectionView或NSTableView自动调整单元格高度

时间:2016-09-26 16:05:54

标签: macos nstableview appkit nscollectionview

在iOS中,您可以使用:

self.tableView.rowHeight = UITableViewAutomaticDimension

实现细胞的自动高度调节。

有没有办法在NSCollectionViewNSTableView的macOS中实现此行为?

2 个答案:

答案 0 :(得分:2)

谈论NSTableView ......截至El Capitan,没有简单的方法可以做到这一点。不确定新的Sierra SDK。

根据我的经验,规范表行高度最可靠的方法是使用NSTableViewDelegate方法:

 func tableView(tableView: NSTableView, heightOfRow row: Int) -> CGFloat {

    //Here you do some magic measuring actual content of the cell and returning heigh
}

唯一有利的是,某些控件具有:fittingSize属性,可以简化处理。

此外,动态内容更改将要求您调用表视图的noteHeightOfRowsWithIndexesChanged方法,以便在您的代码重新计算新高度时再次调用该委托方法。

答案 1 :(得分:0)

使用 ma​​cOS 11 及更新版本,情况如下:

NSTableView 现在实际上可以使用自动布局来实现单元格的自动高度调整。您必须正确配置单元格模板以使用自动布局,并且必须指示表格使用自动布局(也可以在故事板中完成)进行行高计算:

tableView.usesAutomaticRowHeights = true

NSCollectionView 目前(2021 年)在功能上仍落后于 iOS 版本,并且仍然不支持任何 tableview 功能,例如自动行高。