【问题标题】:UIImageView+AFNetworking image not loading correctly in UITableViewCellUIImageView+AFNetworking 图像未在 UITableViewCell 中正确加载
【发布时间】:2012-07-12 08:01:13
【问题描述】:

我正在使用 setImageWithURL 将图像延迟加载到我的 tableview 单元格中,但出现了问题。它可以很好地加载图像,但设备上似乎存在刷新问题,其中图像仅在您将它们滚动出视图并再次滚动时才会显示。

它在模拟器中完美运行。该设备在 iPhone 4S 上运行 iOS 5.1.1

该表显示在 UINavigation 控制器中,并且由于图像被缓存,我希望当我重新访问屏幕时图像会很快出现。确实如此,但显示尺寸只有原来的一半。

图片大小为 60x30。

将图像加载到只有一半大小的 Retina 屏幕是否存在问题?什么会导致此刷新问题?

下面的代码sn-p...

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

    static NSString *CellIdentifier = @"Cell";

    UITableViewCell *cell = [tableview dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) 
    {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];

    }

    ...
    [cell.imageView setImageWithURL:url placeholderImage:[UIImage imageNamed:@"transparent_shade"]];

    ...

    return cell;
}

提前感谢您的任何见解

【问题讨论】:

    标签: ios uitableview afnetworking


    【解决方案1】:

    我建议在 cellForRowAtIndexPath 方法之前加载/准备图像。您在滚动后看到图像的原因是因为在调用此方法时图像先前已下载,因此文件尚不可用。

    例如,在视图的viewWillAppear 方法中创建一个NSMutableArray(如果不存在则覆盖它),并将所有图像放入数组中。然后,在cellForRowAtIndexPath 中简单地从数组中获取图像并根据需要分配它们;它们应该按需显示,没有延迟。

    让我们知道这对您有什么作用。

    【讨论】:

    • 图像显示一半预期大小的原因可能是因为它们的纵横比。我一直在使用方形图像并且没有遇到任何问题,即 32x32 png 文件。
    • 那么,如果你有很多图像,这种情况不会导致内存问题,这不就是为什么 tableviews 重用单元格的部分原因吗?有什么更好的解决方案?
    猜你喜欢
    • 2016-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多