iOS UICollectionViews 和自动布局

Posted

技术标签:

【中文标题】iOS UICollectionViews 和自动布局【英文标题】:iOS UICollectionViews and autolayout 【发布时间】:2017-10-18 17:56:16 【问题描述】:

我遇到了 UICollectionViews 的一个小问题。我之前在这里发布过一个问题,但我想我已经移动了一点 -

UICollectionView - Autolayout with pinterest style layout

目标 -

具有自定义位置布局的 UICollectionview,其中单元格使用自动布局。

当前状态:

我目前有一个继承自 UICollectionViewLayout 的 LayoutView。在我的 PrepareLayout() 中,我循环我的项目集合并创建一个属性列表,然后我根据矩形通过 LayoutAttributesForElementsInRect 返回。

此外,在 PrepareLayout 期间,我使用“原型”单元格(仅用于获得正确大小而不是 UI 一部分的单元格)。我用数据填充单元格,然后询问单元格的最小高度。宽度是根据我当前项目需要的宽度计算的 - 即它是否跨越多个列。

问题:

所以我遇到的问题是我的单元格由多个标签组成,这些标签是多行的(0 行)。我已经创建了附加到 ContentView 顶部、左侧、右侧和底部的约束,但我似乎无法让标签正确换行。我知道 UILabel 需要设置 PreferedMaxWidth 但我的问题是我的单元格将在标签旁边有一个 UIImageView 所以我认为我无法计算剩余的可用空间。

任何人都可以伸出援助之手或向我指出在哪里可以找到更多信息的大致方向吗?

【问题讨论】:

您是否浏览过 Ray Wenderlich 网站上的“Pinterest 样式布局教程”? raywenderlich.com/164608/… 是的,很抱歉,我可能应该声明一下 - 我认为那是我最初的出发点,但不幸的是,似乎是事情的自动布局方面导致了我的问题。 hmmm...自从我看到它已经有一段时间了,但我认为它使用自动布局? 嗯......也许我错过了一些非常明显的东西。我会仔细检查。 刚刚检查...我猜它使用自动布局进行定位,但它是用NSString boundingRect with size计算高度...这还不够吗? 【参考方案1】:

AFAIK,没有办法纯粹地自动布局 UICollectionViewCell,请查看CHTCollectionViewWaterfallLayout。

【讨论】:

是的,我正在手动计算宽度并使用自动布局来获取高度。这是一个稍微更详细的帖子。 forums.developer.apple.com/message/270843

以上是关于iOS UICollectionViews 和自动布局的主要内容,如果未能解决你的问题,请参考以下文章

IOS:将 UICollectionViews 放入 UIPageVieControllers

如何在 iOS Objective C 的嵌套 UICollectionViews 中从 Child UICollectionViewCell 的 UIButton 将值传递给新的 UIViewCon

单个 UIViewController 上的 2 个 UICollectionViews,具有不同数量的部分

嵌套 UICollectionViews 的问题

从多个 UICollectionVIews 内的 UICollectionViewCell 推送新的 UICollectionViewController

Swift 中 UITableViewCell 中的同步滚动 UICollectionViews