sdwebimage:表格单元格中的图像在初始加载后被拉伸

时间:2012-01-31 22:49:42

标签: iphone image uitableview caching sdwebimage

我在我的iPhone项目中使用SDWebImage,并使用它将图像加载到我的表格单元格。

原始下载的图像150 * 150。 我的占位符图片是32 * 32(所需大小)

第一次,当图像加载时,sdwebimage可以很好地重新调整下载图像的大小以匹配占位符图像的大小(32 * 32)。都好。

然而,当我向后导航然后回到同一页面时,图像会被拉伸并填充整个cell.imageView高度。这是正常行为吗?

我需要它始终保持最初的32 * 32大小。你能建议怎么做吗?

编辑:我发现this link其他用户面临类似问题(问题打开)。用户还做了一个简短的youtube video来解释这个问题。

思想?

4 个答案:

答案 0 :(得分:3)

尝试使用cellForRowAtIndexPath:

中的特定大小
   UIImageView *addImage = [[UIImageView alloc] init];
   [addImage setImageWithURL:[NSURL URLWithString:yourCellImageURL] placeholderImage:[UIImage imageNamed:@"placeholder.png"]]; 
   [addImage setFrame:CGRectMake(7, 3, 78, 57)];
   [cell.contentView addSubview:addImage];
   [cell setIndentationLevel:8];

答案 1 :(得分:3)

tldr :如果您的自定义UITableViewCell子类有一个名为@property的{​​{1}} IBOutlet UIImageView*,将您的名称更改为其他名称(例如imageView),它将正常工作。阅读其余答案以了解原因

我看到没有人回答这个问题,我浪费了整整一周时间试图找到解决方案,所以这就是发生在我身上的事情,以及如何防止它发生在你身上(从而解决你的问题)。

我创建了customImageView,扩展了CustomTableViewCell

我将UITableViewCell添加到我的自定义单元格中。 到目前为止,一切似乎都很好,对吗?

除非不是。

@property (weak, nonatomic) IBOutlet UIImageView *imageView;已有UITableViewCell属性。 iOS 7首先使用您的属性,但是当重用Cell时,会使用imageView imageView ,因此会忽略所有约束或先前定义的固定大小。

iOS 8始终使用UITableViewCell中的图片。所以问题在那里更明显。以前的iOS版本也有不同程度的这个问题,通常会出现非常相似的症状。

解决方案?要么自己处理属性UITableViewCell(添加用于布置视图的代码),要么使用不同的名称创建自己的属性,您可以使用该属性添加约束(如果您是在故事板或xib上使用自动布局。

答案 2 :(得分:0)

尝试设置UIImageView的正确内容模式

答案 3 :(得分:0)

如果要在SDWebImage中更改图像大小。 使用此电话。

// Here we use the new provided setImageWithURL: method to load the web image
[cell.imageView setImageWithURL:[NSURL URLWithString:@"http://www.domain.com/path/to/image.jpg"]
           placeholderImage:[UIImage imageNamed:@"placeholder.png"]
                  completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType) { /*here you can change size of image */ }];