动画自调整大小的NSTableView行高

时间:2019-03-14 17:35:04

标签: macos cocoa autolayout nstableview

我有一个使用自定义表格视图单元格的项目。当单元格的高度发生变化时,我想设置动画。 NSTableView的noteHeightOfRows(withIndexesChanged:)将对基于视图的单元格执行此操作,但仅当在委托人的tableView(_, heightOfRow:)方法中显式提供高度时才这样做。通过自动布局计算像元高度时,将忽略此值。

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

1 个答案:

答案 0 :(得分:2)

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

必要步骤:

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

不过,如果您只看一下我放在Github上的代码,就会更容易。