UICollectionViewCell:使用“查看更多”按钮展开文本 - AutoSizing
Posted
技术标签:
【中文标题】UICollectionViewCell:使用“查看更多”按钮展开文本 - AutoSizing【英文标题】:UICollectionViewCell: expand text with "See More" button - AutoSizing 【发布时间】:2018-04-19 09:28:01 【问题描述】:我正在使用 UICollectionView AutoSizing 将多个 UILabel
s 放入 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
使用图像上传 Swift 动态调整 UICollectionViewCell 的大小