我试图将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
中交换了height
和return
,因为应用只是横向广告。这仍然不是最好的解决方案,因为卡片不能保持宽高比。那么有没有办法让尺寸适应屏幕保持宽高比?
答案 0 :(得分:0)
您可以将纵横比约束应用于单元格,使它们自己保持纵横比,然后将另一个约束从单元格应用到视图,以便它们保持与视图相关的纵横比。然后,您可以应用相等的宽度/高度约束来通过乘数调整单元格的大小。