在不同设备上动态设置集合视图单元格大小

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)
    

【讨论】:

以上是关于在不同设备上动态设置集合视图单元格大小的主要内容,如果未能解决你的问题,请参考以下文章

动态集合视图单元格大小目标c?

如何将集合视图单元格设置为所有屏幕的相等行单元格

如何通过自动布局设置集合视图单元格大小

在集合视图单元格中自行调整图像大小

为啥集合视图中的动态集合单元格不显示为给定大小并且在 swift 3 中滚动后会发生变化

swift中的自定义集合视图单元格