UICollectionViewCell:使用“查看更多”按钮展开文本 - AutoSizing

Posted

技术标签:

【中文标题】UICollectionViewCell:使用“查看更多”按钮展开文本 - AutoSizing【英文标题】:UICollectionViewCell: expand text with "See More" button - AutoSizing 【发布时间】:2018-04-19 09:28:01 【问题描述】:

我正在使用 UICollectionView AutoSizing 将多个 UILabels 放入 UIStackView 的单元格。

当用户点击“查看更多”按钮时,我需要展开标签和单元格

到目前为止,我可以更新标签,但更新不会触发UICollectionView 更新单元格的大小。

更新前:

更新后:

我尝试更新单元格的代码:

  var collapsed = true 
    didSet 
      subtitle.numberOfLines = collapsed ? 2 : 0
      subtitle.invalidateIntrinsicContentSize()
      subtitle.setNeedsLayout()
      subtitle.setNeedsDisplay()
      subtitle.layoutIfNeeded()
    
  

layoutSubviews() 被调用,但 preferredLayoutAttributesFitting(_ layoutAttributes: UICollectionViewLayoutAttributes) -> UICollectionViewLayoutAttributes 没有。

我需要触发preferredLayoutAttributesFitting(_ layoutAttributes: UICollectionViewLayoutAttributes) -> UICollectionViewLayoutAttributes方法的调用。

更新:

这个“hack”效果很好:

  func invalidate() 
    guard let collection = superview as? UICollectionView else return
    collection.collectionViewLayout.invalidateLayout()
  

如何仅标记要调整大小的特定单元格?

Video of the effect I'm trying to achieve

【问题讨论】:

您是否尝试重新加载选定的单元格? 【参考方案1】:

最适合我(使用 AutoSizing 单元格时):

collection.performBatchUpdates(nil, completion: nil)

【讨论】:

以上是关于UICollectionViewCell:使用“查看更多”按钮展开文本 - AutoSizing的主要内容,如果未能解决你的问题,请参考以下文章

Swift:如何在 UICollectionViewCell 中使用“prepareForSegue”?

UICollectionViewCell:使用“查看更多”按钮展开文本 - AutoSizing

UICollectionViewCell 使用原型尺寸

使用图像上传 Swift 动态调整 UICollectionViewCell 的大小

在 UICollectionViewCell 中使用 Storyboard 中的自动布局约束

UICollectionViewCell - 圆形下载图像