我正在开发一个填字游戏应用程序,但是当我计算 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
}
最佳答案
这是因为 self.view
在显示屏底部结束。新 iPhone(X、Xs、Xs Max、Xr)底部有一个用于“主页手势”的位置。因此,对于您的计算,您的 CollectionView 的内容比 CollectionView 更大,因为您的 CollectionView 的底部约束等于安全区域底部约束,这对于新 iPhone 来说高于显示屏底部的位置。所以当你需要宽度和高度而不是这个时
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
调用此
let width:CGFloat = self.yourCollectionView.frame.width/CGFloat(crossWordData[0].count)
let height:CGFloat = self.yourCollectionView.frame.height/CGFloat(crossWordData.count) - cellsBorderWidth
关于swift - Swift 4.2 中的自定义 UICollectionViewCell 大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53355007/