【问题标题】:Adapt size of items layout in CollectionView according to screensize maintaining the aspect ratio [Swift]根据屏幕尺寸调整 CollectionView 中项目布局的大小,保持纵横比 [Swift]
【发布时间】:2021-01-19 01:21:00
【问题描述】:

我正在尝试将 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但没有成功。我设法为 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 中交换了widthheight,因为该应用程序仅是横向的。这仍然不是最好的解决方案,因为卡片不保持纵横比。那么有没有办法使尺寸适应屏幕保持纵横比? 感谢您的帮助。

【问题讨论】:

    标签: swift uicollectionview uicollectionviewcell uicollectionviewlayout aspect-ratio


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-11-27
      • 1970-01-01
      • 2012-01-27
      • 1970-01-01
      • 2012-08-23
      • 2020-12-17
      • 1970-01-01
      • 2014-08-07
      相关资源
      最近更新 更多