我有一个UICollectionView,它正好是7个单元格,中间没有填充。为此,我添加了没有临时间隔或行距的流布局,并按如下方式计算宽度:
public func collectionView(
_ collectionView: UICollectionView,
layout collectionViewLayout: UICollectionViewLayout,
sizeForItemAt indexPath: IndexPath
) -> CGSize {
return CGSize(
width: self.frame.width / CGFloat(7),
height: self.frame.height - headerHeight
)
}
这在我的iPhone应用程序中非常有效
未启用旋转的位置。在iPad上,在纵向模式下可以正常工作。
旋转时,首先该应用程序不会重绘,我尝试使invalidateLayout无效,但这不能解决问题。我必须向下滚动,然后得到以下布局
当我点击一个单元格时,它会重绘,但是添加了填充,将第7个单元格向下推到另一行。
我希望重新绘制单元格,以便当应用在旋转视图中旋转或增长并缩小时,所有7个单元都适合放在一行中。我应该如何正确处理?
答案 0 :(得分:1)
将其添加到您的UIViewController
类中
它会在您更改设备方向时自动调整布局。
override func viewWillLayoutSubviews() {
super.viewWillLayoutSubviews()
guard let Coll_Layout = collVwPhotos.collectionViewLayout as? UICollectionViewFlowLayout else {
return
}
Coll_Layout.invalidateLayout()
}