AFNetworking在UITableViewCell上的setImageWithURL在Retina上的大小错误

时间:2013-03-28 13:48:36

标签: uitableview afnetworking

使用带有20x20px图像的setImageWithURL加载图像的最简单示例最终会使默认单元格的图像视图为10x10px。

如果使用以下代码在没有AFNetworking类别方法的情况下加载图像,则图像将按预期设置为20x20:

为什么会这样? (我修改了以前的代码)。

 UITableViewCell *cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"Whatever"];

    if (cell == nil) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"Whatever"];
    }

    if (indexPath.row == 0) {
        [cell.imageView setImageWithURL:[NSURL URLWithString:@"http://acidblue.com/images/Gender_Male.png"]];
    } else {
        cell.imageView.image = [UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:@"http://acidblue.com/images/Gender_Male.png"]]];
    }

示例代码可在以下位置找到: https://www.dropbox.com/s/ha9lw7suenolzb2/AFNetworkingCellExample.zip

还有一种奇怪的行为,因为每次都不会立即显示AFNetworking呼叫中的图标。我认为这是一个线程问题,但我已检查并且主线程上正在设置图标。目前,如果图标没有显示,请将表格向下拉,然后重绘。这是我想要解决的另一个问题。

3 个答案:

答案 0 :(得分:0)

将您的imageview框架设置为20x20

你能提供那张图片的网址吗?

答案 1 :(得分:0)

我不知道AFNetworking的内部工作方式,但可能是同样的原因,如果您希望UIImage size返回像素,则在Retina显示屏上查询时会出现“意外”值。原因是将像素转换为Retina显示屏上的点

来自Apple Reference的

  

@property(非原子,只读)CGSize大小

     

在iOS 4.0及更高版本中,此值反映图像的逻辑大小,并以磅为单位进行测量。在iOS 3.x及更早版本中,此值始终反映以像素为单位测量的图像尺寸。

请参阅以下问题和答案:(并非特定于AFNetworking)

Why UIImage View showing wrong Size of Image

答案 2 :(得分:0)

只需将contentMode的{​​{1}}设置为“UIImageView”。

UIViewContentModeScaleAspectFit