异步下载后图像调整大小 AFNetworking UiTableView

Posted

技术标签:

【中文标题】异步下载后图像调整大小 AFNetworking UiTableView【英文标题】:Image resizes after async download AFNetworking UiTableView 【发布时间】:2017-12-07 00:59:13 【问题描述】:

我已经实现了 AFNetworking 以将图像异步下载到我的表格中,一切正常,但是当我向下滚动表格时,单元格中的图像会缩小。

我的代码如下所示:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell" forIndexPath:indexPath];
    NSDictionary *dictionary = [self.json objectAtIndex:indexPath.row];
    cell.textLabel.text=[dictionary objectForKey:@"name"];
    cell.detailTextLabel.text = [dictionary objectForKey:@"description"];

    NSString *path = [[[[dictionary objectForKey:@"images"] objectAtIndex:0] valueForKey:@"thumb"] valueForKey:@"url"];
    NSString *ruta = [NSString stringWithFormat:@"http://18.221.78.126/ecoferia%@",path];
    NSURL *url = [NSURL URLWithString:ruta];
    [cell.imageView setImageWithURL:url
                      placeholderImage:[UIImage imageNamed:@"placeholder.png"]];
    return cell;

这里有一些截图:

picture 1

picture 2

任何提示都会有所不同。 问候。

【问题讨论】:

【参考方案1】:

ios 中有不同类型的内容模式可用于图像视图

例如,

1) 通过保持纵横比来缩放内容以适应视图大小的选项。视图边界的任何剩余区域都是透明的。

cell.imageView.contentMode = UIViewContentModeScaleAspectFit;

2) 缩放内容以填充视图大小的选项。部分内容可能会被剪裁以填充视图的边界。

cell.imageView.contentMode = UIViewContentModeScaleAspectFill;

3) 如有必要,可通过更改内容的纵横比来缩放内容以适应自身大小。

cell.imageView.contentMode = UIViewContentModeScaleToFill;

更多详情可以参考Apple Documentation

对于您的评论,您还可以创建自定义 UItableview 单元格或原型单元格在该单元格的 UI 中,您可以为标题添加图像视图和标签并设置 根据您的要求对图像视图进行约束

【讨论】:

谢谢你的回答,但是这个选项没有效果,当我与桌子互动时,图像仍然缩小。 @AndresAldana 我已经更新了我的答案希望对您有所帮助【参考方案2】:

转到单元格并设置 uiimageview 适当的约束,例如 uiimageview hight 和 with

【讨论】:

以上是关于异步下载后图像调整大小 AFNetworking UiTableView的主要内容,如果未能解决你的问题,请参考以下文章

使用 AFNetworking 异步下载图像后,是不是可以从 UIImageView 获取图像

iOS - 在 AFNetworking 异步图像下载线程完成后重新加载 UITableView

下载内部图像后调整 UICollectionView 单元格的大小

UITableView 单元格自动调整 AFNetworking 2.0 提供的一些图像视图的大小

异步图像下载和调整图像高度后如何更新表格视图单元格

AFNetworking 异步下载 GIF 带占位符