如何使用自动布局在 iPhone 6 和 6 Plus 中调整 UICollectionViewCell 的大小

Posted

技术标签:

【中文标题】如何使用自动布局在 iPhone 6 和 6 Plus 中调整 UICollectionViewCell 的大小【英文标题】:How to resize UICollectionViewCell in iPhone 6 and 6 Plus using autolayout 【发布时间】:2015-01-16 09:50:19 【问题描述】:

我在一个 ios 项目中工作,我在其中使用使用 Autolayout 和 SizeClasses 的 collectionView。使用自定义 UICollectionViewCell xib。我在 collectionView 中重用自定义单元格的地方,在 iPhone 5s 中呈现两个单元格,如下图所示。

问题是在 iPhone 6 和 6 Plus 中运行相同的项目时,单元格没有调整大小,单元格之间有空间,您可以在下面看到它。

当单元格大小增加时在 xib 中调整大小并选择更新帧但不调整 iPhone 6 的大小。

其他 SO 帖子提供的答案没有帮助。

【问题讨论】:

嗨!希望查看您的自动版式设置(如果有)。 找到解决方案了吗?我遇到了同样的事情: 【参考方案1】:

数学技巧召回平方根 数字 33 = 项目计数!您可以独立于您的总项目数来调整它的大小和屏幕中更多或更少的项目!!!例如,iPhone 4 上的 / (Double(33)) 将容纳 4 列 33 个项目,每行 4 个项目!在 iPhone 6 Pluse 中,您会看到相同的图片单元格将按 4 列放大! 如果您输入 1,您将在任何设备屏幕上获得一个全宽单元格!

// ...........returning cell size based on device screen size by calculating square roo

        func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize 

            let deviceSize = UIScreen.mainScreen().bounds.size
            let flexSize = sqrt(Double(deviceSize.width * deviceSize.height) / (Double(33)))

                return CGSize(width: flexSize , height: flexSize)

        

【讨论】:

这完全无法理解。 对不起!!!如果您想制作响应式用户界面,这是您必须使用的技术!在 sizeForItemAtIndexPath 中,您只需根据设备屏幕尺寸和项目数为单元格提供动态宽度和高度!!!如果您不明白我很抱歉! 可理解性问题在于您的语法。例如,这个问题与脚无关。您的回答也与问题中提出的自动布局无关。您正在绕过自动布局并根据屏幕大小为每个单元格分配固定大小。通过在集合视图加载后将 itemSize 设置为固定值,可以更有效地实现相同的功能。 jejeje 忘了它,先生!我只是提供另一种可以提供相同结果的解决方案!!!!你想使用自动布局去吧! 我认为这是一个简单的拼写错误。他的意思是“适合”

以上是关于如何使用自动布局在 iPhone 6 和 6 Plus 中调整 UICollectionViewCell 的大小的主要内容,如果未能解决你的问题,请参考以下文章

iPhone 5 和 iPhone 6 的自动布局约束问题

自动布局 iPhone 6 不起作用

如何在自动布局中设计 3x3 按钮支持所有使用 Storyboard 的 iPhone 设备

Swift Xcode 自动布局约束仅针对 iphone 6 plus 和 ipad

iphone 6 plus 上自动布局的意外结果

如何申请 iPhone 6 的设计指南?