如何使用自动布局动态调整具有固定宽度的collectionview单元格高度?

Posted

技术标签:

【中文标题】如何使用自动布局动态调整具有固定宽度的collectionview单元格高度?【英文标题】:How to dynamically size collectionview cell height with fixed width using autolayout? 【发布时间】:2015-04-21 02:48:38 【问题描述】:

我已经阅读了所有堆栈溢出帖子,这些帖子描述了如何使用自动布局动态计算 UITableView 单元格设置的高度,并且我能够成功地实现它。

我的问题是对集合视图单元格做同样的事情。问题出在collectionView:layout:sizeForItemAtIndexPath: 中,当我调用[collectionViewCell.contentView systemLayoutSizeFittingSize:UILayoutFittingCompressedSize] 时,它返回的大小针对高度和宽度都进行了压缩。

有没有办法恢复压缩后的大小,宽度固定为 contentView 的原始值?那么,本质上是获得固定宽度的压缩高度?

【问题讨论】:

【参考方案1】:

你可以这样做:

- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath 
     return CGSizeMake(STATIC_WIDTH, [collectionViewCell.contentView systemLayoutSizeFittingSize:UILayoutFittingCompressedSize].height);

希望这能解决。让我知道:)

【讨论】:

这通常有效,但如果单元格的高度取决于宽度(例如纵横比),它将不起作用。

以上是关于如何使用自动布局动态调整具有固定宽度的collectionview单元格高度?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用自动布局调整 UILabel 宽度以适合文本?

仅在自动布局中具有固定宽度的垂直滚动视图

如何裁剪具有动态宽度、流畅布局的文本?

将 UIButton 的 titleLabel 文本与自动布局匹配在固定的恒定宽度上

如何根据浏览器的尺寸自动沿div宽度调整div高度

UICollectionView 单元格在swift中使用约束固定宽度和动态高度