Swift 4.2中的自定义UICollectionViewCell大小

时间:2018-11-17 19:56:40

标签: swift layout uicollectionviewcell

我正在开发一个填字游戏应用程序,但是当我计算UICollectionView的每个itemSize时,我总是会丢失一些东西。我得到的iPhone SE尺寸正确,但iPhone XR的尺寸错误。我在做什么错了?

func setLayout() -> UICollectionViewFlowLayout {
    let layout = UICollectionViewFlowLayout()
    layout.itemSize = getCellSize()
    layout.minimumInteritemSpacing = 0
    layout.minimumLineSpacing = 0
    layout.sectionInset = UIEdgeInsets(top: 0, left: 0, bottom: 0, right: 0)
    return layout
}

func getCellSize() -> CGSize {
    let width:CGFloat = self.view.frame.width/CGFloat(crossWordData[0].count)
    let height:CGFloat = (self.view.frame.height -  TitleView.frame.height)/CGFloat(crossWordData.count) - cellsBorderWidth
    //cellsBorderWidth = 1.2
    let cellSize = CGSize(width:width , height:height)
    return cellSize
}

iPhone SE - looking good

iPhone XR - bottom cells are cut

2 个答案:

答案 0 :(得分:0)

这是因为终止于显示底部。新的iPhone(X,Xs,Xs Max,Xr)在底部放置了“原始手势”。因此,对于您的计算,CollectionView的内容大于CollectionView,因为CollectionView的底部约束等于安全区域底部约束,对于新iPhone,该约束高于显示底部。所以当您需要宽度和高度而不是这个

self.view

称呼这个

let width:CGFloat = self.view.frame.width/CGFloat(crossWordData[0].count)
let height:CGFloat = (self.view.frame.height -  TitleView.frame.height)/CGFloat(crossWordData.count) - cellsBorderWidth

答案 1 :(得分:0)

最终,这就是我更改代码的方式-

let width:CGFloat = self.view.frame.width/CGFloat(crossWordData[0].count)
let height:CGFloat = self.view.frame.height*0.85/CGFloat(crossWordData.count)

在屏幕布局中,收藏夹视图的高度为85%