动画自调整 NSTableView 行高

smr*_*smr 2 macos cocoa nstableview autolayout

我有一个使用自调整表格视图单元格的项目。我想在单元格的高度发生变化时设置动画。NSTableViewnoteHeightOfRows(withIndexesChanged:)将对基于视图的单元格执行此操作,但仅当在委托的tableView(_, heightOfRow:)方法中明确提供高度时。使用自动布局计算单元格高度时,将忽略此值。

我可以让单元格视图本身进行动画处理,但它包含的行视图会跳转到由约束决定的最终大小。还尝试在行视图上使用高度约束并为其设置动画,但它也被忽略了。有人离开开发解决了这个问题的 Mac 应用程序吗?

Tim*_*oes 5

我创建了一个示例项目并将其放在Github 上,它可以为表格的行高设置动画。它不使用委托tableView(_, heightOfRow:)函数。看一看。

必要的步骤:

  • 在表格视图上设置行高以使用自动布局。
  • 调用table viewbeginUpdate()endUpdate()on table view 的环绕动画。
  • 更改 NSTableCellView 中控件的属性,并 noteHeightOfRows(withIndexesChanged:)在调用NSAnimationContext.runAnimationGroup.

但是,如果您只查看我放在Github上的代码,那就更容易了。