所以我正在构建一个应用程序,其中我有一个集合视图,其中有两个单元格在一行但是当我旋转屏幕时,我想把它改成4。我该怎么做?

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
    let cellWidth =  (view.frame.size.width - 50) / 2
    return CGSize(width: cellWidth, height: cellWidth)
}

override func viewWillTransition(to size: CGSize,
                                 with coordinator: UIViewControllerTransitionCoordinator)
{
    collectionView?.collectionViewLayout.invalidateLayout()
}

最佳答案

viewWillTransition中添加超级方法。

super.viewWillTransition(to: size, with: coordinator)

这将允许超级视图将此方法类传递给其所有子视图。
override func viewWillTransition(to size: CGSize,
                             with coordinator: UIViewControllerTransitionCoordinator)
{
      super.viewWillTransition(to: size, with: coordinator)
      collectionView?.collectionViewLayout.invalidateLayout()
}

09-27 12:23