UIImage 在自我调整 UITableViewCell 拉伸
UIImage in self sizing UITableViewCell stretching
所以我有一个 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
- 底边距=text.bottom
- text.top = topMargin + 16
如何解决此问题,使图像不会拉伸?如果需要任何其他信息,请询问,我会添加。
谢谢
-豪尔赫
为图像添加与其宽度相匹配的高度限制,以保持其方形纵横比。或者任何高度。只需固定高度,使其不会拉伸。
image.height = SuperView(content of cell).width * 0.4
对于我刚刚创建的一个应用程序,tableViewCells 和图像表现出类似的东西,在单元格滚出屏幕并返回视图后拉伸。
假设图像是从服务器(或带有图像数据的文件)中检索到的,创建一个带有比例因子的 UIImage,然后将其设置为 tableViewCell 中 UIImageView 的图像。在将其设置为 5 之前,我尝试了一些比例因子(而不是计算,因此您的结果可能会有所不同)...最好为生产代码计算,但在原型设计中,这种启发式有效:
UIImage* scaledImage = [[UIImage alloc] initWithData:data scale:5.0f];
// ... On MainThread
[cell.imageView setImage:scaledImage];
所以我有一个 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
- 底边距=text.bottom
- text.top = topMargin + 16
如何解决此问题,使图像不会拉伸?如果需要任何其他信息,请询问,我会添加。
谢谢 -豪尔赫
为图像添加与其宽度相匹配的高度限制,以保持其方形纵横比。或者任何高度。只需固定高度,使其不会拉伸。
image.height = SuperView(content of cell).width * 0.4
对于我刚刚创建的一个应用程序,tableViewCells 和图像表现出类似的东西,在单元格滚出屏幕并返回视图后拉伸。
假设图像是从服务器(或带有图像数据的文件)中检索到的,创建一个带有比例因子的 UIImage,然后将其设置为 tableViewCell 中 UIImageView 的图像。在将其设置为 5 之前,我尝试了一些比例因子(而不是计算,因此您的结果可能会有所不同)...最好为生产代码计算,但在原型设计中,这种启发式有效:
UIImage* scaledImage = [[UIImage alloc] initWithData:data scale:5.0f];
// ... On MainThread
[cell.imageView setImage:scaledImage];