swift - Swift 4.2 中的自定义 UICollectionViewCell 大小

标签 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

最佳答案

这是因为 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/

相关文章:

ios - 当我调用 CollectionView :didSelectItemAtIndexPath 时没有任何反应

ios - 单元格不快速显示 subview

ios - 这个 SKShapeNode 渐变着色代码有什么问题?

swift - 透明 Popover 和黑色父级 UIViewController

html - CSS float 和标记顺序 - 我可以鱼和熊掌兼得吗?

php - 关于菜单和内容最佳实践的简单 PHP 问题

ios - 如何允许用户输入多行文本 Swift(如 Facebook 或 Twitter 帖子)

android - 具有layout_height ="wrap_content"的android XML布局中的ImageView具有顶部和底部填充

ios - 将新单元格添加到 Collection View 时,我不断收到布局错误

swift - 设备方向更改后使 collectionViewCell 中的 CAShapeLayer 无效并重绘