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

Posted

技术标签:

【中文标题】UITableView 单元格自动调整 AFNetworking 2.0 提供的一些图像视图的大小【英文标题】:UITableView cell autoresizes some image views fed by AFNetworking 2.0 【发布时间】:2013-12-19 09:42:17 【问题描述】:

我有一个带有基本单元格的 UITableViewController。在我的tableView: cellForRowAtIndexPath: 方法实现中,我使用AFNetworking 2.0 类别:UIImageView+AFNetworking 设置了我的单元格的.imageView 属性以从Internet 获取数据。

if (p.avatarPhoto) 
    [cell.imageView setImageWithURL:p.avatarPhoto placeholderImage:[UIImage imageNamed:@"photo_frame.png"]];

当我这样做时,我的表格行会正确生成并显示图像,但是当我突出显示行或滚动时它的大小会发生变化(因此行会重新出现),就像在这个屏幕截图上一样:https://dl.dropboxusercontent.com/u/51630060/ScreenDemo-20131219-102840.mov

当我将图像设置为捆绑的图像,而不是来自网络的图像时,它可以正常工作。

我应该如何设置图像以使其正常工作?

编辑:我用于测试的图像是这个:http://hollywoodvideo.com/wp-content/uploads/2013/08/avatar-whatshisface.jpg。也许是这张图片的纵横比问题?

【问题讨论】:

【参考方案1】:

我对 AFNetworking 1 有非常相似的问题,我通过创建对单元格的周引用和调用 setNeedsDisplay 对其进行排序。请看下文,它是 AFNetworking 1 字节,您可以使其适用于 AFN.. 2.o:

__weak UITableViewCell *weakCell = cell;

[cell.imageView setImageWithURLRequest:[[NSURLRequest alloc] initWithURL:p.avatarPhoto]
                      placeholderImage:[UIImage imageNamed:@"photo_frame.png"]
                               success:^(NSURLRequest *request, NSHTTPURLResponse *response, UIImage *image)
                                   weakCell.imageView.image = image;
                                   [weakCell setNeedsLayout];
                               
                               failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error)

                               ];

【讨论】:

是的,似乎正在发生的事情是单元格被布置为占位符。当加载的图像设置为新图像时,单元格仍然包含占位符大小而不是新图像大小的布局。

以上是关于UITableView 单元格自动调整 AFNetworking 2.0 提供的一些图像视图的大小的主要内容,如果未能解决你的问题,请参考以下文章

自动调整嵌入在 UITableView 中的 UICollectionView 单元格不起作用

在 IOS Objective C 中,如何让单元格自动调整其子 UITableView 的内容大小

自动布局动态大小 uitableview 单元格的最佳方法是啥

如何强制 uitableview 调整单元格的大小(在停用高度约束后)?

如何根据里面的单元格自动设置 UITableView 的高度?

为啥 DispatchQueue.main.async 会影响单元格自动调整大小?