Ios 横向模式下的Swift集合视图
因此,我正在构建一个应用程序,其中我有一个集合视图,一行有两个单元格。但当我旋转屏幕时,我想将其更改为4。我该怎么做Ios 横向模式下的Swift集合视图,ios,swift,uicollectionview,Ios,Swift,Uicollectionview,因此,我正在构建一个应用程序,其中我有一个集合视图,一行有两个单元格。但当我旋转屏幕时,我想将其更改为4。我该怎么做 func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize { let cellWidth = (view.fram
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中添加超级方法
这将允许superview将此方法类传递给其所有子视图
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 {
let cellWidth = (view.frame.size.width - 50) / 2
if UIDevice.current.orientation.isLandscape {
return CGSize(width: (cellWidth-30)/2, height: (cellWidth-30)/2)
} else {
return CGSize(width: cellWidth, height: cellWidth)
}
}
func collectionView(_ collectionView: UICollectionView,
layout collectionViewLayout: UICollectionViewLayout,
sizeForItemAt indexPath: IndexPath) -> CGSize {
let cellWidth = (view.frame.size.width - 50) / 2
if UIDevice.current.orientation.isLandscape {
return CGSize(width: (cellWidth-30)/2, height: (cellWidth-30)/2)
} else {
return CGSize(width: cellWidth, height: cellWidth)
}
}