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



在iOS中你可以使用:

self.tableView.rowHeight = UITableViewAutomaticDimension

来实现单元格的自动高度调整。

是否有办法在macOS中实现NSCollectionViewNSTableView的这种行为?

谈论NSTableView…在酋长岩,要做到这一点并不容易。不确定新的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方法,以导致该委托方法被再次调用,您的代码将重新计算新的高度

对于macOS 11及更新版本,情况如下:

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

tableView.usesAutomaticRowHeights = true

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

最新更新