iphone - 从网络加载图像使应用程序挂起

标签 iphone ios uitableview uiimage

我正在我的 iPhone 应用程序中从网络加载图像。我将此图像用于表格单元格的 ImageView 。应用程序启动后几秒钟,所有图像都已完全加载。但表格的滚动不流畅。有延迟。滚动发生在手势后几秒钟。还有抽搐。我正在使用这段代码

UIImage *imagefromWeb = [UIImage imageWithData:[NSData dataWithContentsOfURL:[IconArray objectAtIndex:indexPath.row]]];
        CGSize newSize= CGSizeMake(45.0,45.0);
        UIGraphicsBeginImageContextWithOptions(newSize, NO, 0.0);
        [imagefromWeb drawInRect:CGRectMake(0, 0, newSize.width, newSize.height)];
        UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
        UIGraphicsEndImageContext();
        cell.imageView.image=newImage;

最佳答案

您正在同步加载图片,这就是问题所在,请尝试使用以下代码异步下载图片:

        dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH,  0ul);
    dispatch_async(queue, ^{

        NSURL *imageURL=[NSURL URLWithString:urlString];
        NSData *imageData=[NSData dataWithContentsOfURL:imageURL];
        dispatch_sync(dispatch_get_main_queue(), ^{
            CustomCell *cell = (CustomCell *)[tableView cellForRowAtIndexPath:indexPath];
            cell.imageView.image=[UIImage imageWithData:imageData];
            [cell setNeedsLayout];

        });
    });

关于iphone - 从网络加载图像使应用程序挂起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14097363/

相关文章:

ios - ios中的视频编码

android - Appcelerator Titanium 性能

ios - 如何在 Controller 之间传递数据?

ios - 在 Swift 中将平移手势识别器添加到 UITableView

ios - Xcode dataSource 必须从 tableView :cellForRowAtIndexPath 返回一个单元格

iphone - 仅在 iOS8 中,当 App 锁定为纵向时,UIAlertView 会更改为横向

iphone - Google App Engine Java - 对于 POST 参数,request.getParameter 在部署时返回 null,但在本地工作

c# - 我可以在 Vista 上使用 C#.NET 开发 iPhone 应用程序吗?

iphone - Xcode Base 国际化不起作用

ios - didFailWithError : Error Domain=kCLErrorDomain Code=0 "The operation couldn’ t be completed.(kCLErrorDomain 错误 0。)”