UICollectionView - resizing cells on device rotate - Swift

后端 未结 9 1595
醉梦人生
醉梦人生 2020-12-04 23:12

I\'ve created a UICollectionView, so that I can arrange views into neat columns. I\'d like there to be a single column on devices > 500 pixels wide.

In order to achi

9条回答
  •  夕颜
    夕颜 (楼主)
    2020-12-05 00:07

    traitCollectionDidChange method might be used as well instead of viewWillLayoutSubviews:

    override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) {
        super.traitCollectionDidChange(previousTraitCollection)
    
        guard let previousTraitCollection = previousTraitCollection, traitCollection.verticalSizeClass != previousTraitCollection.verticalSizeClass ||
            traitCollection.horizontalSizeClass != previousTraitCollection.horizontalSizeClass else {
                return
        }
    
        if traitCollection.horizontalSizeClass == .regular && traitCollection.verticalSizeClass == .regular {
            // iPad portrait and landscape
            // do something here...
        }
        if traitCollection.horizontalSizeClass == .compact && traitCollection.verticalSizeClass == .regular {
            // iPhone portrait
            // do something here...
        }
        if traitCollection.horizontalSizeClass == .regular && traitCollection.verticalSizeClass == .compact {
            // iPhone landscape
            // do something here...
        }
        collectionView?.collectionViewLayout.invalidateLayout()
        collectionView?.reloadData()
    }
    

提交回复
热议问题