UIImage 中的自定尺寸 UITableViewCell 拉伸

Posted

技术标签:

【中文标题】UIImage 中的自定尺寸 UITableViewCell 拉伸【英文标题】:UIImage in self sizing UITableViewCell stretching 【发布时间】:2017-04-04 13:59:03 【问题描述】:

所以我有一个 tableview 设置,所以它显示一些带有图像的信息文本,文本可以变化,所以我设置了单元格自行更新其大小的约束,但是图像正在拉伸,如下所示,我'已检查内容模式是否设置为 Aspect Fit

从图像中可以看出,单元格中有 3 个视图: -标题 - 正在拉伸的图像 -描述

我的约束设置如下:

    Title.top = topMargin Title.trailing = trailingMargin Title.leading =leadingMargin

    Title.height = 32

    Image.leading =leadingMargin

    Image.top = Title.bottom + 16 bottom.margin = Image.bottom

    Image.width = SuperView(单元格内容).width * 0.4

    text.leading = image.trailing + 16

    trailingMargin = text.trailing bottomMargin = text.bottom text.top = topMargin + 16

如何解决此问题以使图像不会拉伸?如果需要任何其他信息,请询问,我会添加它。

谢谢 -豪尔赫

【问题讨论】:

您是否尝试过将 imageView 设置为 aspectFit 我已经在问题中声明它设置为 aspectFit,这就是为什么我对拉伸感到困惑 【参考方案1】:

为图像添加与宽度匹配的高度限制,以保持其正方形纵横比。或者任何高度。只需固定高度,使其不会拉伸即可。

image.height = SuperView(content of cell).width * 0.4

【讨论】:

但是,如果有很多文本,单元格就不能因为这个限制而增长,对吧? 仅当单元格高度绑定到图像高度时。我没有看到图像底部的约束。您可以使用 >= 在单元格底部添加一个以允许空间更大。 我不确定为什么会这样,因为在我尝试添加一个乘数为 1 的纵横比之前它给了我错误,但是现在有了它的高度限制,这很奇怪。我将尝试使用更大的文本,看看它是否适用于其他约束(大于或等于)。 它应该可以工作,除非图像底部和单元格内容视图的底部之间存在固定约束。综上所述,过去我在使用自动调整表格视图单元格大小时遇到​​了严重问题,并且已经完全远离它们以计算单元格大小。大大改善了滚动延迟和性能。只是思考的食物 设置起来可能相当困难,但有了这些新的限制,它工作得非常好,即使是较大的文本,非常感谢【参考方案2】:

对于我刚刚创建的应用程序,tableViewCells 和图像表现出类似的情况,在单元格滚动离开屏幕并返回视图后拉伸。

假设图像是从服务器(或具有图像数据的文件)检索的,在将其设置为 tableViewCell 中 UIImageView 的图像之前,创建一个具有比例因子的 UIImage。在将其设置为 5 之前,我尝试了一些比例因子(而不是计算,因此您的结果可能会有所不同)......最好为生产代码进行计算,但在原型设计中,这种启发式有效:

 UIImage* scaledImage = [[UIImage alloc] initWithData:data scale:5.0f];
 // ... On MainThread
 [cell.imageView setImage:scaledImage];

【讨论】:

以上是关于UIImage 中的自定尺寸 UITableViewCell 拉伸的主要内容,如果未能解决你的问题,请参考以下文章

嵌入在 UICollectionViewCell 中的自定尺寸 UITableView

在 willDisplay 中配置自定尺寸单元格

如何设置自定尺寸单元 iOS8

为啥 UIImage 的尺寸比实际尺寸大 3 倍?

如何缩放 UIImage 以适应 UIScrollView 的尺寸?

以全尺寸保存 UIImage,包括从 UIImageView 进行的转换