Как я могу сделать недействительным макет потока с анимацией, как в IOS? - PullRequest
1 голос
/ 29 мая 2019

Я делаю приложение в Xcode для Mojave OSX.

Я хочу изменить размер collectionview и позиции этого элемента. В настоящее время я вызываю метод invalidateLayout(), но он пересчитывает и устанавливает размеры и позиции без анимации.

В GIF вы можете увидеть, каково текущее поведение, мне нужно, чтобы последний элемент перешел ко второму row, анимированным образом.

Для этого я пытаюсь переопределить методы NSCollectionViewFlowLayout

  open override func prepare(forAnimatedBoundsChange oldBounds: NSRect){


    }

    open override func finalizeAnimatedBoundsChange() {

    }

Но их никогда не вызывают, и я не знаю, какой код мне нужен, чтобы оживить этот переход.

1 Ответ

0 голосов
/ 31 мая 2019

(перенесено из вопроса в ответ.)

Вы можете переопределить viewDidLayout вашего viewController (или назначить наблюдателя для рамы) и выполнить это:

 collectionView.animator().performBatchUpdates(nil)

Это перезагрузит вашу коллекцию viewLayout с анимацией.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...