Как сделать недействительным макет collectionView iOS 13 - PullRequest
0 голосов
/ 12 марта 2020

Мне нужно отключить макет collectionView при изменении границ, будь то при вращении или при изменении размера ячейки.

В iOS 12 и ниже я использовал этот код, и он работает:

    override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) {
        super.viewWillTransition(to: size, with: coordinator)

        if let layout = self.collectionView.collectionViewLayout as? UICollectionViewFlowLayout {
            layout.invalidateLayout()
        }
    }

    override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) {
        super.traitCollectionDidChange(previousTraitCollection)

        if let layout = self.collectionView.collectionViewLayout as? UICollectionViewFlowLayout {
            layout.invalidateLayout()
        }
    }

Однако в iOS 13 функции traitCollectionDidChange и viewWillTransition изменились там поведение и больше не вызывается при изменении размера.

Что будет лучшим местом для аннулирования макетов лучшим гостем, так это viewWillLayoutSubviews, однако я не уверен на 100%, будет ли это хорошей идеей.

    override func viewWillLayoutSubviews() {
        super.viewWillLayoutSubviews()

        if #available(iOS 13, *) {
            if let layout = self.collectionView.collectionViewLayout as? UICollectionViewFlowLayout {
               layout.invalidateLayout()
           }
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...