UICollectionViewCell:使用“查看更多”按钮扩展文本 - 自动调整大小

时间:2018-04-19 09:28:01

标签: ios uicollectionview uilabel uicollectionviewcell autosize

我正在使用放置在UILabel中的多个UIStackView的UICollectionView AutoSizing单元格。

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

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

更新前:

enter image description here

更新后:

enter image description here

代码我试图更新单元格:

  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 方法。

更新

这个“黑客”效果很好:

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

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

Video of the effect I'm trying to achieve

1 个答案:

答案 0 :(得分:0)

最适合我(使用自动调整单元格时):

collection.performBatchUpdates(nil, completion: nil)