Анимация NSTableView высота строки строки - PullRequest
2 голосов
/ 14 марта 2019

У меня есть проект, использующий ячейки табличного представления с самоопределением размеров. Я хотел бы анимировать, когда высота ячейки меняется. NSTableView noteHeightOfRows(withIndexesChanged:) будет делать это для ячеек на основе представления, но только при явном указании высоты в методе делегата tableView(_, heightOfRow:). Когда высота ячейки рассчитывается с помощью автоматического макета, это значение игнорируется.

Я могу получить само представление ячейки для анимации, но содержащее ее представление строки переходит к окончательному размеру, определяемому ограничениями. Также пытался использовать ограничение высоты в представлении строки и анимировать это, но это также было проигнорировано. Кто-нибудь оставил разработку приложений для Mac, которая решила эту проблему?

1 Ответ

2 голосов
/ 15 марта 2019

Я создал пример проекта и поместил его на Github , который анимирует высоту строки таблицы.Он не использует функцию делегатов tableView(_, heightOfRow:).Взгляните на это.

Необходимые шаги:

  • Установите высоту строки в табличном представлении для использования автоматического размещения.
  • Объемная анимация с вызовом beginUpdate() и endUpdate() в табличном представлении.
  • Измените свойства элементов управления в NSTableCellView и вызовите noteHeightOfRows(withIndexesChanged:) для таблицы в рамках вызова на NSAnimationContext.runAnimationGroup.

Однако проще, если вы просто посмотрите на код, который я поставил на Github .

...