1

这是我的布局

我有一个 UICollectionView,它的单元格中嵌入了 UICollectionViews。在 iPad 上,当我旋转屏幕时,我可以通过覆盖使父 UICollectionView 的布局无效

func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator)

这工作得很好。但是,我不确定如何将此触发器重定向到各个单元格内的 UICollectionViews。

到目前为止,我试图使那些 UICollectionViews thru 的布局无效func layoutSubviews()。这不是很一致,因为某些单元格仍然具有旧布局。然而,这:

func willTransition(from oldLayout: UICollectionViewLayout, to newLayout: UICollectionViewLayout)

在这种情况下根本不会触发。

我还尝试func shouldInvalidateLayout(forBoundsChange newBounds: CGRect) -> Bool了嵌入式 UICollectionViews 的流布局。

我没有使用自定大小的单元格,即,我通过提供单元格的大小

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize

解决此问题以获得一致结果的最简单方法是什么?

感谢这方面的任何指示。

4

1 回答 1

0

您是否尝试过在父单元格的每个 UIView 中覆盖以下方法?

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

            collectionView.collectionViewLayout.invalidateLayout()
        }
于 2019-09-03T16:17:43.603 回答