【问题标题】:sdwebimage: Image in table cell gets stretched after initial loadsdwebimage:表格单元格中的图像在初始加载后被拉伸
【发布时间】:2012-02-23 16:24:49
【问题描述】:

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

原始下载图片150 * 150。 我的占位符图片是 32*32(需要的尺寸)

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

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

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

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

想法?

【问题讨论】:

    标签: iphone image uitableview caching sdwebimage


    【解决方案1】:

    在 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];
    

    【讨论】:

      【解决方案2】:

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

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

      我创建了一个扩展 UITableViewCellCustomTableViewCell

      我将@property (weak, nonatomic) IBOutlet UIImageView *imageView; 添加到我的自定义单元格中。 到目前为止,一切似乎都很好,对吧?

      除非它不是。

      UITableViewCell 已经有一个 imageView 属性。 iOS 7 一开始使用你的属性,但是当 Cell 被重用时,UITableViewCellimageView 被使用,因此忽略了你所有的约束或之前定义的固定大小。

      iOS 8 总是使用来自UITableViewCell 的图像。所以问题在那里更明显。以前的 iOS 版本也存在不同程度的此问题,通常呈现非常相似的症状。

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

      【讨论】:

      • 天哪,你无法相信你的回答给了我多少健康,我可能会感到愚蠢或感激,无论哪种方式,如果不是你的回答,我可能会结束做一些复杂的事情,比如在代码中设置图像视图的位置或类似的东西。非常感谢!
      • 呃.. 一样。这应该是生成的警告。可悲的是,我想我两周前刚做了 textLabel(相同类型的问题)并抓住了自己。
      【解决方案3】:

      尝试为 UIImageView 设置合适的内容模式

      【讨论】:

      • 感谢您的回复。你能详细说明一下吗?我尝试了 UIViewContentModeScaleAspectFit 并没有效果。我没有自定义表格单元格。
      【解决方案4】:

      如果您想在 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 */ }];
      

      【讨论】:

        猜你喜欢
        • 2013-06-23
        • 1970-01-01
        • 2015-07-15
        • 2013-09-30
        • 1970-01-01
        • 2019-07-30
        • 1970-01-01
        • 2011-03-24
        • 2011-08-25
        相关资源
        最近更新 更多