Как оживить ретрансляцию NSCollectionViewLayout на изменение границ? - PullRequest
0 голосов
/ 30 августа 2018

У меня есть базовая реализация NSCollectionViewLayout, очень похожая на NSCollectionViewFlowLayout:

Помещает элемент в горизонтальный ряд. Если места недостаточно, следующий элемент добавляется в следующий ряд и т. Д.

Мой вопрос: как можно анимировать изменение макета, когда элемент перемещается из первого ряда во второй ряд?

Вот пример:

Relayout

Обратите внимание, как элемент № 3 «перепрыгивает» с первого на второй ряд. Я хотел бы оживить это изменение.

Существует множество способов анимации добавления / удаления элементов, но я не смог выяснить, как анимировать изменения макета, когда элементы не меняются.

1 Ответ

0 голосов
/ 22 сентября 2018

Методы, которые вы хотите переопределить в подклассе макета: 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

Очищается после любых анимированных изменений границ представления коллекции или после вставки или удаления элементов.

...