【问题标题】:How to adjust cell height for picture that is downloaded async如何调整异步下载的图片的单元格高度
【发布时间】:2013-07-22 04:16:47
【问题描述】:

我正在像这样设置我的自定义单元格的图像。

        __weak CustomCell *weakcell = cell1;


            NSURLRequest *request = [[NSURLRequest alloc] initWithURL:[NSURL URLWithString:postPictureLink]];
    //it uses AFNetwork's UIImageView+AFNetworking extension
    [cell1.postImageView setImageWithURLRequest:request placeholderImage:nil success:^(NSURLRequest *request, NSHTTPURLResponse *response, UIImage *image) {

        weakcell.postImageView.image = image;
        //this method call changes cell height according to image size
        [weakcell layoutSubviews];


    } failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error) {

    }];

那么我该如何实现

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath;

方法使它可以根据我的单元格的大小给出不同的高度?由于图像大小可以不同,不同的单元格有不同的高度。

【问题讨论】:

  • 您是否只在单元格上设置图像?或者还有什么其他的吗?
  • 你在哪里有这个代码?您应该将图像添加到数据源,然后您可以在 heightForRowAtIndexPath 中查询其大小。

标签: ios objective-c cocoa-touch


【解决方案1】:

这很难做到。一种选择是以某种方式从您获取图像的 API 中获取大小。

第二种选择是仅在图像下载后显示您的单元格。然后,您可以从图像本身获取您的身高。

最后,您可以在下载图像后重新加载行。这可能会在您的图片下载时导致一些奇怪的动画问题。

【讨论】:

    【解决方案2】:

    我已经完成了您想做的类似操作,为此编写的 API 将返回带有 URL 的图像的大小,所以我知道从服务器下载时它需要多大的大小,所以我给出了高度据此。
    如果您看到 flickr 或任何其他图像 API,您会看到有一个选项可以获取每个不同分辨率图像的大小。

    【讨论】:

    【解决方案3】:

    请记住,您的表格视图单元格可以(或应该)通过dequeueReusableCellWithIdentifier: 方法重复使用,因此您不希望将图像存储在表格单元格上。

    更好的解决方案是维护一组图像,您可以在 heightForRowAtIndexPath 中查询这些图像,并在配置实际单元格时使用它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-04-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-12
      • 1970-01-01
      • 2012-12-20
      相关资源
      最近更新 更多