我的集合视图单元格遇到横向问题。当应用程序处于纵向时,它为我提供每行正确的单元格数量,即 2。但是当我将应用程序旋转到横向时,它每行显示 1 个单元格。这是我得到的屏幕:
Portrait:
Landscape:
这是我添加单元格大小的代码:
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。行也是如此。
如果需要,您也可以使用屏幕尺寸,但我的集合视图中有自动布局约束以匹配屏幕尺寸,因此结果相同。我希望这就是您正在寻找的。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)