Как оживить ретрансляцию NSCollectionViewLayout на изменение границ?
У меня есть базовая реализация NSCollectionViewLayout
очень похоже на NSCollectionViewFlowLayout
:
Помещает элемент в горизонтальный ряд. Если места недостаточно, следующий элемент добавляется в следующий ряд и так далее.
Мой вопрос: как я могу анимировать изменение макета, когда элемент перемещается из первого ряда во второй ряд?
Вот пример:
Обратите внимание, как элемент № 3 "перепрыгивает" с первого на второй ряд. Я хотел бы оживить это изменение.
Существует множество способов анимировать добавление / удаление элементов, но я не смог выяснить, как анимировать изменения макета, когда элементы не меняются.
1 ответ
Методы, которые вы хотите переопределить в подклассе макета, - метод prepare(forAnimatedBoundsChange:) и finalizeAnimatedBoundsChange ().
Из документации:
open func prepare(forAnimatedBoundsChange oldBounds: NSRect) // NSCollectionView calls this when its bounds have changed inside an animation block before displaying items in its new bounds
Подготавливает объект макета для анимированных изменений границ представления коллекции или для вставки или удаления элементов.
open func finalizeAnimatedBoundsChange() // also called inside the animation block
Очищается после любых анимированных изменений границ представления коллекции или после вставки или удаления элементов.