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.bottomImage.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