使用 AutoLayout 和 iOS 8 为不同设备调整 UICollectionViewCell 的大小

Posted

技术标签:

【中文标题】使用 AutoLayout 和 iOS 8 为不同设备调整 UICollectionViewCell 的大小【英文标题】:Resize UICollectionViewCell for different devices with AutoLayout and iOS 8 【发布时间】:2015-01-21 06:57:52 【问题描述】:

我是 ios 编程新手,所以请原谅我的无知。现在,我正在使用 CollectView 构建一个类似于 iOS 中的“照片”应用程序的应用程序。所以,CollectionViewCell 里面有一个 imageView。我已经对 imageView 和 Cell 设置了约束,因此当调整单元格大小时,imageView 也会调整大小。我根据 iPad 模拟器的尺寸构建了它,它工作正常。现在,我的问题是将我的应用程序移植到 iPhone 上——单元格和图像的大小与 iPad 中的大小相同。我想要做的是它们应该根据设备的尺寸相应缩小(相同的图像在 iPhone 中应该看起来更小)。我已经尝试以编程方式检测设备并设置项目大小(所有图像的尺寸相同,所以我没有使用 sizeForItemAtIndexPath :) 的 collectionViewFlowLayout 但这意味着我必须计算和硬编码不同设备的单元格的宽度和高度.我想知道随着 iOS8 和 AutoLayout 的到来是否有更优雅的解决方案,而无需求助于编码。

【问题讨论】:

【参考方案1】:

您可以使用尺寸等级来做到这一点。 Here你有一个很棒的教程来学习如何使用。

【讨论】:

我试过了。我遇到的问题是图像已调整大小但单元格没有。因此,当我切换到 iPhone 时,由于限制,图像的大小正确,但是由于单元格的大小与 iPad 中的大小相同,因此存在非常大的间隙/填充。似乎不可能在 CollectionViewCell 上添加约束。有什么建议吗? 你可以通过代码来做。如果是 iPad,您可以调整单元格的大小。看这个链接:***.com/questions/16272216/… 我知道我可以通过代码来完成,但我试图避免这种情况。相反,我想知道 iOS 8 是否通过使用大小类/自适应布局提供了更优雅的解决方案。我想我已经在我的问题中提到了这一点。我已经尝试过大小​​类,但问题是您只能将 ImageView 上的约束设置为 Cell,这样 ImageView 会调整大小而不是 Collection View Cell。而且我找不到任何方法通过使用大小类来调整单元格大小。

以上是关于使用 AutoLayout 和 iOS 8 为不同设备调整 UICollectionViewCell 的大小的主要内容,如果未能解决你的问题,请参考以下文章

长表单的 iOS AutoLayout

iOS 8 AutoLayout 改变视图的位置

iOS 7 和 8 中 UITableViewCells 的自动布局指标不同

iOS 8 UI布局 AutoLayout及SizeClass

iOS:UIView 的 Autolayout 拉伸高度过多(Xcode 8、Swift 3)

iOS将autoLayout按钮位置设置为故事板中心的剩余空间