具有动态图像尺寸的 UICollectionViewCell - 当您滚动时,当重新使用单元格时,图像会失去其初始约束 附加 TestApp

Posted

技术标签:

【中文标题】具有动态图像尺寸的 UICollectionViewCell - 当您滚动时,当重新使用单元格时,图像会失去其初始约束 附加 TestApp【英文标题】:UICollectionViewCell with a dynamic image dimensions - As u scroll, the image loses its initial constraints when the cell is re-used TestApp attached 【发布时间】:2020-10-22 03:17:52 【问题描述】:

我需要一些帮助。

我有一个用于登机场景的 UICollectionViewCell,每个单元格包含一个具有不同尺寸的动态设置的图像。

我正在使用类似于 SnapKit 的 WWLayout 来处理约束。

问题是当我扫过并且重新使用单元格时,约束中断并且图像失去其初始尺寸。

我已附加了一个 TestApp。

https://www.dropbox.com/s/tx141lpr0uzlhbx/Test%20App.Image.Resize.zip?dl=0

谢谢。

【问题讨论】:

【参考方案1】:

OnBoardingItemView.swift,函数layoutUI(),就在你布局imageView之前,尝试添加这一行:

imageView.removeConstraints(imageView.constraints)

【讨论】:

当然我也完全忘记删除约束了。我最终在 prepareForReuse() 中添加了 imageView.removeConstraints(),非常感谢?【参考方案2】:

图像未正确缩放。使用此代码更新您的代码以防止图像拉伸。

private lazy var imageView: UIImageView = 
    let imageView = UIImageView()
    imageView.contentMode = .scaleAspectFit
    return imageView
()

这个变量在 OnBoardingItemView.swift 第 35 行

【讨论】:

以上是关于具有动态图像尺寸的 UICollectionViewCell - 当您滚动时,当重新使用单元格时,图像会失去其初始约束 附加 TestApp的主要内容,如果未能解决你的问题,请参考以下文章

具有绝对位置的div中的水平中心动态图像

如何防止两个标签重叠,但具有动态宽度?

具有动态输入形状的 CNN

使视图的高度随图像 Xcode swift 的高度动态变化

如何使用 ios 中的约束使视图位置动态化?

根据图像尺寸动态居中搜索栏