swift - Swift - 如何针对不同的 IOS 设备大小调整 UICollectionViewCell 的比例
问题描述
我
CollectionView
在底部使用 a 作为菜单栏,
我创建了一个自定义类,并制作了 5 个均匀间隔的单元格,这些单元格在 iPhone 8 上ViewController
填充了以下内容,这是预期的结果 -CollectionView
layout.itemSize = CGSize(width: self.frame.width / 5, height: self.frame.height)
layout.minimumInteritemSpacing = 0
layout.minimumLineSpacing = 0
self.contentInset = UIEdgeInsets(top: 0, left: 0, bottom: 0, right: 0)
self.scrollIndicatorInsets = UIEdgeInsets(top: 0, left: 0, bottom: 0, right: 0)
self.collectionViewLayout = layout;
但是,当我在任何具有更大屏幕的 iPhone 上运行该项目时,我得到以下结果:
我的问题是,我怎样才能将单元格放大以适应没有任何边距,即使它需要CollectionView
增加它的高度,我希望图像(将放置在单元格中)保持它们与 iPhone 8 的纵横比屏幕。
我可以CollectionViewCell
用代码增加每个的大小吗?如果是这样,有没有办法在不计算迄今为止发布的每部 iPhone 的宽度/高度的情况下这样做?
或者有人可以推荐一种不同的方法来实现这一点吗?如果我以错误的方式接近这个。
提前致谢!
解决方案
看起来视图的宽度在你放线的地方不正确
layout.itemSize = CGSize(width: self.frame.width / 5, height: self.frame.height)
所以用
layout.itemSize = CGSize(width: UIScreen.main.bounds.width / 5, height: self.frame.height)
你也可以实现
func collectionView(_ collectionView: UICollectionView,
layout collectionViewLayout: UICollectionViewLayout,
sizeForItemAt indexPath: IndexPath) -> CGSize
符合UICollectionViewDelegateFlowLayout
推荐阅读
- javascript - 带有 CSS 滚动捕捉的指示器(点)
- python-3.x - python 2/3 兼容性问题与异常
- c++ - 如何为一个类声明一个友元函数?
- python - AttributeError:模块“熊猫”没有属性“系列”
- go - 错误:此包中重新声明了类型
- java - java.sql.SQLSyntaxErrorException: ORA-04044: 此处不允许过程、函数、包或类型
- laravel - Laravel:如何在模型的主键更改为 slug 时定义关系?
- csv - 从 R 中的链接下载文件
- javascript - 如何通过 AJAX 获取请求访问从 php 文件中以 JSON 格式检索的特定数据?
- interface - F# use composition notation in interface member implementation