【问题标题】:How to resize UICollectionViewCell based on device screen如何根据设备屏幕调整 UICollectionViewCell 的大小
【发布时间】:2020-04-05 00:29:53
【问题描述】:

我有一个带有自定义单元格的 UICollectionView,但是,我试图对 UICollectionView 施加约束,因此它始终是屏幕宽度的一半和屏幕高度的一半。我经常遇到的一个问题是,虽然 UICollectionView 根据应用程序部署的设备而变化,但 UICollectionViewCells 保持完全相同的像素宽度和高度尺寸。这是我尝试实现的代码,以使每个单元格的高度和宽度与 CollectionView 相同。

 func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
    let height = collectionView.frame.height
    let width  = collectionView.frame.width
    return CGSize(width: width, height: height)
}

但是,此代码不起作用,因为单元格的大小只是在 UICollectionView 的大小检查器中指定的值。

我无法弄清楚我的代码在这里做错了什么。非常感谢您的帮助。

【问题讨论】:

    标签: ios swift uicollectionview uicollectionviewcell


    【解决方案1】:

    问题是您的集合视图单元格大小始终是固定的。所以单元格大小不会根据屏幕大小调整。使用视图框架大小。(从大小检查器中删除值)

    func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
        return CGSize(width: view.frame.width, height: view.frame.height)
    }
    

    【讨论】:

    • 我不确定您从尺寸检查器中删除值是什么意思。当我尝试删除值时,它最终会自动填充为 0,所以我不明白删除它是什么意思。如果您能详细说明,将不胜感激。
    • 我的意思是在尺寸检查器中将其设置为 0,并像 answer 一样以编程方式设置它
    • 不幸的是,它没有
    • 你能把你得到的结果截图加进去吗
    • UICollectionViewCell 的大小现在为 0x0,因此很遗憾没有显示任何内容。它没有从方法中读取值。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-19
    • 1970-01-01
    • 2017-01-19
    • 1970-01-01
    相关资源
    最近更新 更多