根据屏幕尺寸调整CollectionView中项目布局的大小,保持纵横比

时间:2016-07-06 15:47:38

标签: ios swift uicollectionview uicollectionviewcell uicollectionviewlayout

我试图将CollectionView中的项目布局大小调整为保持宽高比的屏幕大小。到目前为止它只适用于iPad,我根据资产的尺寸设置了高度和宽度:

private let CardWidth: CGFloat = 362
private let CardHeight: CGFloat = 568

然后在CardLayout类中继承自UICollectionViewFlowDelegate

required init?(coder aDecoder: NSCoder) {
   super.init(coder: aDecoder)

   scrollDirection = UICollectionViewScrollDirection.Horizontal
   itemSize = CGSizeMake(PageWidth, PageHeight)
   minimumInteritemSpacing = 10
}

问题是商品是卡片,因此height> width,虽然我只是在横向开发iPhone和iPad,但我尝试使用UIScreen.mainScreen().bounds但没有成功。我设法在CollectionViewController.swift添加了iPhone和iPad,获得了不错的结果:

func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize{

retrun CGSizeMake(collectionView.frame.size.width / 2 ,collectionView.frame.size.height/ 2)
}

我在width中交换了heightreturn,因为应用只是横向广告。这仍然不是最好的解决方案,因为卡片不能保持宽高比。那么有没有办法让尺寸适应屏幕保持宽高比?

1 个答案:

答案 0 :(得分:0)

您可以将纵横比约束应用于单元格,使它们自己保持纵横比,然后将另一个约束从单元格应用到视图,以便它们保持与视图相关的纵横比。然后,您可以应用相等的宽度/高度约束来通过乘数调整单元格的大小。