如何根据设备屏幕调整 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 的大小的主要内容,如果未能解决你的问题,请参考以下文章