我正在尝试将CollectionView中的项目大小调整为屏幕大小,并保持宽高比例。到目前为止,它只在iPad上工作良好,我已根据素材的尺寸设置了一个height
和一个width
:
private let cardWidth: CGFloat = 362
private let cardHeight: CGFloat = 568
然后在
CardLayout
类中,它继承自 UICollectionViewFlowDelegate
。 scrollDirection = UICollectionViewScrollDirection.Horizontal
itemSize = CGSizeMake(cardWidth, cardHeight)
minimumInteritemSpacing = 10
问题是项目是卡片形式,所以高度大于宽度,而我正在为iPhone和iPad开发仅支持横屏的应用。我尝试使用UIScreen.mainScreen().bounds,但没有成功。我在CollectionViewController中添加了一些代码,成功地获得了iPhone和iPad的不错效果。
func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize{
return CGSizeMake(collectionView.frame.size.height / 2 ,collectionView.frame.size.width / 2)
}
我在返回尺寸时交换了
width
和height
,因为应用程序只支持横屏。但这仍然不是最好的解决方案,因为卡片无法保持纵横比。那么有没有一种方法可以根据屏幕调整尺寸并保持纵横比呢?