如何根据设备屏幕调整 UICollectionViewCell 的大小

Posted

技术标签:

【中文标题】如何根据设备屏幕调整 UICollectionViewCell 的大小【英文标题】:How to resize UICollectionViewCell based on device screen 【发布时间】: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 的大小检查器中指定的值。

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

【问题讨论】:

【参考方案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,因此很遗憾没有显示任何内容。它没有从方法中读取值。

以上是关于如何根据设备屏幕调整 UICollectionViewCell 的大小的主要内容,如果未能解决你的问题,请参考以下文章

如何将ImageView放在Xamarin.Android应用程序中,根据设备屏幕大小自行调整大小?

没有为所有屏幕设备正确调整大小的约束

上传所有移动设备时如何调整图像大小?

根据设备调整按钮宽度和高度

我可以使用情节提要根据屏幕尺寸调整静态表格视图的大小吗?

在bigpicture样式通知中调整图像大小