旋转后的CollectionView布局

时间:2017-05-03 04:08:07

标签: ios swift uicollectionview

我有一个显示我的照片库的集合视图。在我选择一个单元格之后,它将转到另一个集合视图,其中单元格框架是全屏大小。

纵向方向似乎很好。然而,当我转向风景时,有些东西会混乱。

如果没有viewWillTransitionitemSize将不会重新塑造,所以它就像下图所示。

enter image description here

使用viewWillTransition,将调用collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize,并重新设置itemSize。但是,仍然没有预料到,有什么建议吗?

enter image description here

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

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
    return self.view.bounds.size
}

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumInteritemSpacingForSectionAt section: Int) -> CGFloat {
    return 0
}

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumLineSpacingForSectionAt section: Int) -> CGFloat {
    return 0
}

1 个答案:

答案 0 :(得分:0)

使用UICollectionViewDelegateFlowLayout扩展类

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
    return CGSize(width: UIScreen.main.bounds.size.width, height: UIScreen.main.bounds.size.height-20)
}
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumLineSpacingForSectionAt section: Int) -> CGFloat{
    return 0
}