根据屏幕大小调整 CollectionView 中项目布局的大小,保持纵横比 [Swift]
Adapt size of items layout in CollectionView according to screensize maintaining the aspect ratio [Swift]
我正在尝试调整 CollectionView 中项目布局的大小以适应保持纵横比的屏幕大小。到目前为止它只在 iPad 上运行良好,我根据资产的尺寸设置了高度和宽度:
private let CardWidth: CGFloat = 362
private let CardHeight: CGFloat = 568
然后在CardLayout
class中继承自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
但没有成功。我设法为 iPhone 和 iPad 添加 CollectionViewController
:
都获得了不错的结果
func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize{
retrun CGSizeMake(collectionView.frame.size.width / 2 ,collectionView.frame.size.height/ 2)
}
我在 return
中交换了 width
和 height
,因为该应用程序仅限横向。这仍然不是最好的解决方案,因为卡片不保持纵横比。那么有没有一种方法可以使尺寸适应屏幕以保持纵横比?
感谢帮助。
您可以将纵横比约束应用于单元格,以便它们自身保持纵横比,然后将来自单元格的另一个约束应用于视图,以便它们保持相对于视图的纵横比。然后,您可以应用相等 widths/height 约束,通过乘数调整单元格的大小。
我正在尝试调整 CollectionView 中项目布局的大小以适应保持纵横比的屏幕大小。到目前为止它只在 iPad 上运行良好,我根据资产的尺寸设置了高度和宽度:
private let CardWidth: CGFloat = 362
private let CardHeight: CGFloat = 568
然后在CardLayout
class中继承自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
但没有成功。我设法为 iPhone 和 iPad 添加 CollectionViewController
:
func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize{
retrun CGSizeMake(collectionView.frame.size.width / 2 ,collectionView.frame.size.height/ 2)
}
我在 return
中交换了 width
和 height
,因为该应用程序仅限横向。这仍然不是最好的解决方案,因为卡片不保持纵横比。那么有没有一种方法可以使尺寸适应屏幕以保持纵横比?
感谢帮助。
您可以将纵横比约束应用于单元格,以便它们自身保持纵横比,然后将来自单元格的另一个约束应用于视图,以便它们保持相对于视图的纵横比。然后,您可以应用相等 widths/height 约束,通过乘数调整单元格的大小。