我正在使用放置在UILabel
中的多个UIStackView
的UICollectionView AutoSizing单元格。
当用户点击“查看更多”按钮时,我需要展开标签和单元格。
到目前为止,我可以更新标签,但更新不会触发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 方法。
更新
这个“黑客”效果很好:
func invalidate() {
guard let collection = superview as? UICollectionView else {return}
collection.collectionViewLayout.invalidateLayout()
}
如何仅标记要调整大小的特定单元格?
答案 0 :(得分:0)
最适合我(使用自动调整单元格时):
collection.performBatchUpdates(nil, completion: nil)