在不同设备上动态设置集合视图单元格大小
Posted
技术标签:
【中文标题】在不同设备上动态设置集合视图单元格大小【英文标题】:Dynamically set collection view cell size on different devices 【发布时间】:2017-01-03 18:19:44 【问题描述】:我正在尝试使用一个集合视图来实现水平滑动,该集合视图应该有一个以每次滑动为中心的图像视图
我可以通过手动将单元格高度 + 宽度设置为设备尺寸来在一种设备尺寸上执行此操作
但是,当我更换设备时,单元格大小不成比例
如何保持单元格大小随每个设备而变化?我希望单元格占据 100% 的宽度和高度
谢谢
【问题讨论】:
【参考方案1】:我的建议:不要。您所描述的更像是 UIPageViewController 而不是集合视图。而对于 UIPageViewController,您所描述的内容是微不足道的——它实际上是自动发生的。
【讨论】:
【参考方案2】: func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize
return CGSizeMake(self.view.frame.size.width) , (self.view.frame.size.height))
虽然我同意马特的回答。但是您也可以使用此代码来完成。 你不需要创建扩展。你只需要重写这个集合视图委托方法
【讨论】:
【参考方案3】:为您的集合视图创建自定义流布局并将委托分配给您的视图控制器。
这将允许您根据要求动态更改布局(在您的情况下,每个设备的大小不同)。具体来说,collectionView(UICollectionView, layout: UICollectionViewLayout, sizeForItemAt: IndexPath)
方法允许您更改每个项目的单元格大小。它看起来像这样:
extension ViewController : UICollectionViewDelegateFlowLayout
func collectionView(UICollectionView, layout: UICollectionViewLayout, sizeForItemAt: IndexPath) -> CGSize
return CGSize(width: UIScreen.main.bounds.width, height: UIScreen.main.bounds.height)
【讨论】:
以上是关于在不同设备上动态设置集合视图单元格大小的主要内容,如果未能解决你的问题,请参考以下文章