动画自动调整 NSTableView 行高
Animate self-sizing NSTableView row height
我有一个使用自动调整 table 视图单元格的项目。我想在单元格的高度发生变化时制作动画。 NSTableView 的 noteHeightOfRows(withIndexesChanged:)
将为基于视图的单元格执行此操作,但仅当在委托的 tableView(_, heightOfRow:)
方法中明确提供高度时。当使用自动布局计算单元格高度时,该值将被忽略。
我可以使单元格视图本身具有动画效果,但它包含的行视图会跳转到约束规定的最终大小。还尝试在行视图上使用高度约束并为其设置动画,但它也被忽略了。有人离开开发 Mac 解决了这个问题的应用程序吗?
我创建了一个示例项目并将其放在 Github 上,它为 table 的行高设置动画。它不使用委托 tableView(_, heightOfRow:)
函数。看看吧。
必要的步骤:
- 在 table 视图上设置行高以使用自动布局。
- 在 table 视图上调用
beginUpdate()
和 endUpdate()
的环绕动画。
- 更改 NSTableCellView 中控件的属性并调用
noteHeightOfRows(withIndexesChanged:)
在 table 上调用 NSAnimationContext.runAnimationGroup
。
不过,如果你只看我放在 Github 上的代码,那就更容易了。
我有一个使用自动调整 table 视图单元格的项目。我想在单元格的高度发生变化时制作动画。 NSTableView 的 noteHeightOfRows(withIndexesChanged:)
将为基于视图的单元格执行此操作,但仅当在委托的 tableView(_, heightOfRow:)
方法中明确提供高度时。当使用自动布局计算单元格高度时,该值将被忽略。
我可以使单元格视图本身具有动画效果,但它包含的行视图会跳转到约束规定的最终大小。还尝试在行视图上使用高度约束并为其设置动画,但它也被忽略了。有人离开开发 Mac 解决了这个问题的应用程序吗?
我创建了一个示例项目并将其放在 Github 上,它为 table 的行高设置动画。它不使用委托 tableView(_, heightOfRow:)
函数。看看吧。
必要的步骤:
- 在 table 视图上设置行高以使用自动布局。
- 在 table 视图上调用
beginUpdate()
和endUpdate()
的环绕动画。 - 更改 NSTableCellView 中控件的属性并调用
noteHeightOfRows(withIndexesChanged:)
在 table 上调用NSAnimationContext.runAnimationGroup
。
不过,如果你只看我放在 Github 上的代码,那就更容易了。