Swift中Collection视图的横向方向

我在collections视图单元格中遇到了横向的问题。 当应用程序是纵向的,它给了我每行的单元格的正确数量是2.但是,当我旋转我的应用程序横向显示每行1个单元格。 这里是我得到的屏幕:

肖像: 在这里输入图像说明

景观: 在这里输入图像说明

这是我的代码添加单元格的大小:

func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize { var screenSize = CGFloat() if UIDevice.currentDevice().orientation.isLandscape.boolValue { screenSize = UIScreen.mainScreen().bounds.size.width } else { screenSize = UIScreen.mainScreen().bounds.size.width } let cellWidth = screenSize / 2.0 return CGSizeMake(cellWidth, cellWidth) } 

这是你可以做的

 let orientation = UIApplication.sharedApplication().statusBarOrientation if(orientation == .LandscapeLeft || orientation == .LandscapeRight) { return CGSizeMake((yourCollectionView.frame.size.width-10)/2, (yourCollectionView.frame.size.height-10)/2) } else{ return CGSizeMake((yourCollectionView.frame.size.width-5)/2, (yourCollectionView.frame.size.height-10)/3) } 

这段代码实现了什么: – 如果你的视图是纵向的,你会看到2列和3行,如果你的视图是横向的,你会看到3列和2行。 您在代码中看到的扣除是两个连续单元格之间的间距。 所以如果有3列,扣除是15,如果有2列,扣除是10,假设两个单元格之间的间距是5。

你也可以使用屏幕大小,如果你想,但我有我的集合视图中的自动布局约束,以匹配屏幕的大小,所以它的结果是一样的。 我希望这是你正在寻找的。