UIImageView 不是 StackView 和 TableViewCell 中的自动高度

Posted

技术标签:

【中文标题】UIImageView 不是 StackView 和 TableViewCell 中的自动高度【英文标题】:UIImageView is not auto height in StackView with TableViewCell 【发布时间】:2017-05-12 16:19:26 【问题描述】:

这是视图层次结构

我希望 PhotoImgView 自动高度取决于图像大小

图片是从服务器下载的

我使用 KingFisher 下载图片

下载完成后,我设置PhotoImgView的高度约束,在cell类中做layoutIfNeeded()

但它不会立即更新 UI

当我滚动到另一个单元格,让单元格不可见,然后向后滚动时,单元格将是正确的

我该怎么做?

collectionView同样的问题,我在collectionview.reloaData之后设置collectionview的高度约束并得到collectionview.contentSize.height

【问题讨论】:

【参考方案1】:

试试这个:

用这个替换你当前的layoutIfNeeded()

DispatchQueue.main.async 
    self.layoutIfNeeded()

【讨论】:

【参考方案2】:

尝试在layoutIfNeeded() 之前调用setNeedsLayout()

要获得集合视图高度的正确结果,您可以尝试:

collectionView.reloadData()
collectionView.setNeedsLayout()
collectionView.layoutIfNeeded()
collectionView.collectionViewLayout.invalidateLayout()

【讨论】:

以上是关于UIImageView 不是 StackView 和 TableViewCell 中的自动高度的主要内容,如果未能解决你的问题,请参考以下文章

Stackview中的iOS 10方形UIIMageView在隐藏时会破坏自动布局

如何有条件地在 StackView 中居中图像

水平stackview标签随着固定高度元素增长

Childview宽度锚在stackView中不起作用

UIImageView 高度与 UILabel 字体高度相同。在 UIStackView 内居中

stackView 中的 StackView 不能通过 swift 使用它的间距