这是我的layout。
我有一个UICollectionView,其单元格中嵌入了UICollectionViews。在iPad上,当我旋转屏幕时,可以通过覆盖来使父UICollectionView的布局无效
func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator)
这很好。但是,我不确定如何将此触发器重定向到单个单元格内的UICollectionViews。
到目前为止,我已经尝试通过
func layoutSubviews()
使那些UICollectionViews的布局无效。这不是非常一致,因为某些单元格仍具有旧版式。但是,这:func willTransition(from oldLayout: UICollectionViewLayout, to newLayout: UICollectionViewLayout)
在这种情况下根本不会被触发。
我还尝试在嵌入式UICollectionViews的流布局中使用
func shouldInvalidateLayout(forBoundsChange newBounds: CGRect) -> Bool
。我没有使用自动调整大小的单元格,即通过
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize
解决此问题以获得一致结果的最干净方法是什么?
感谢这方面的任何指示。
最佳答案
您是否尝试在父单元格的每个UIView中覆盖以下方法?
override public func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) {
super.traitCollectionDidChange(previousTraitCollection)
collectionView.collectionViewLayout.invalidateLayout()
}