UICollectionview 动态高度问题

Posted

技术标签:

【中文标题】UICollectionview 动态高度问题【英文标题】:UICollectionview dynamic height issue 【发布时间】:2018-05-08 07:34:37 【问题描述】:

我想达到以下结果

我已经实现了collectionview 水平滚动。启用滚动时它工作正常。但是,当禁用滚动并且流变为垂直时,仅显示第一行并且集合视图高度不会增加。

问:- 禁用滚动时如何获得全高的集合视图?

我尝试了以下代码来获取高度,它返回30.0

let height = self.collectionTags.collectionViewLayout.collectionViewContentSize.height; // 30.0 

这个返回0.0

let height = self.collectionTags.contentSize.height // 0.0

这里是collectionview布局代码

if let flowLayout = collectionTags.collectionViewLayout as? UICollectionViewFlowLayout 
    flowLayout.estimatedItemSize = CGSize(width: 1, height: 30.0)
    flowLayout.itemSize = UICollectionViewFlowLayoutAutomaticSize

【问题讨论】:

我想你想得到像输出一样的令牌字段。请看this 【参考方案1】:

我遇到了类似的问题。我的解决方案是将height constraint 添加到collectionView 并根据我想要显示的项目计算它的高度。这是我创建的一个 sn-p:

// Items that will be displayed inside CollectionView are called tags here
// Total tags width
var tagWidth:CGFloat = 0

// Loop through array of tags
for tag in self.tagsArray 

  // Specifying font so we can calculate dimensions
  let tagFont = UIFont(name: "Cabin-Bold", size: 17)!
  let tagAttributes: [String : Any]? = [
    NSFontAttributeName: tagFont,
    NSForegroundColorAttributeName: UIColor.white,
    ]

  // Get text size
  let tagString = tag as NSString
  let textSize = tagString.size(attributes: tagAttributes ?? nil)

  // Add current tag width + padding to the total width
  tagWidth += (textSize.width + 10)


// Calculate number of rows
var totalRows = tagWidth / (self.bounds.width - 40)
totalRows = totalRows.rounded(.up)

// Calculate height and apply it to the CollectionView height constraint
estimatedCollectionViewHeight = Float(CGFloat(totalRows * 29))
collectionViewHeight.constant = CGFloat(estimatedCollectionViewHeight)

【讨论】:

以上是关于UICollectionview 动态高度问题的主要内容,如果未能解决你的问题,请参考以下文章

在 UITableViewCell 中添加 UICollectionView 后 UI 突然发生变化

具有动态高度的 UICollectionViewCell 使用 NSURL 进行图像下载

嵌套垂直 UICollectionView 和动态高度

UICollectionview 动态高度问题

UICollectionView 动态高度和宽度

UICollectionView:使用 UIStackView 的动态单元格高度