我有一个表格,它打开了 UITableViewAutomaticDimension
以自动计算每个单元格的高度。自动布局已打开。
表格有自定义单元格。这些单元格中的每一个都包含一个图像 (UIImageView
)
第一次显示表格时,屏幕上可见的图像被垂直拉伸(stretch)。
其余图像都正常(未拉伸(stretch))。 如果我向下滚动(因此第一张图片变得不可见)并向上滚动以再次看到它,那么图片将变为正常(未拉伸(stretch))
由于某些原因,iOS 似乎无法正确计算第一张图片的高度。
你见过这样的吗?你知道怎么解决吗?
我尝试对 UIImageView 使用不同的模式(Aspect Fit、Aspect Fill)。我可以让它看起来正确。然而,细胞本身仍然被拉伸(stretch)(比它应该的高得多)。
附言我试图创建一个单独的项目来在干净的环境中复制这个问题,但我找不到导致错误的东西。
最佳答案
这听起来可能是因为 UIImageView 中的原始图像开始时尺寸较大,然后 UITableViewAutomaticDimension
变得困惑。您是否尝试过对每一行使用相同的图像或使用适合 UIImageView
尺寸的较小图像?
你说
If I scroll down (so the first image become invisible) and scroll back up to see it again then the image will become normal (not stretched)
这很可能是因为 tableview 通过 UITableView
的 dequeueReusableCellWithIdentifier
重用了单元格,这意味着每次您想要显示单元格时都不需要重新创建一个新单元格从已创建的单元格堆栈中获取一个并使用该单元格(主要是为了节省内存)。此外,这可能是由自动布局问题引起的(可能未设置约束或存在约束重叠,XCode 试图通过打破一个或多个约束来解决问题)
此外,您从未说明问题是针对 Objective-C
还是 Swift
。
关于ios - 使用 UITableViewAutomaticDimension 时 UIImageView 拉伸(stretch)不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33768430/