iphone - 从网络加载 UIImage 的最常见方式

标签 iphone ios objective-c xcode cocoa

亲爱的stackoverflowers,

我误入歧途了。

在我的应用程序中,我从网络加载 2 张图片,如下所示:

-(void)loadImages
{
  ...

  image1 = [UIImage imageWithData:[NSData dataWithContentsOfURL:imgUrl1]];
  image2 = [UIImage imageWithData:[NSData dataWithContentsOfURL:imgUrl2]];
}

为了不阻塞主线程,我使用GCD:

dispatch_async( dispatch_get_global_queue(0,0), ^{
            [self loadImages];

之后,我在我的 UITableView 中使用这些图像:

if (indexPath.row == 0)
    {
        cell.imageView.image = image1;
    }
    else
    {
        cell.imageView.image = image2;
    }

然后我决定添加 UIActivityIndi​​cator,但遇到了一些问题。我知道我的代码不正确。我看到人们使用 NSURLRequestNSURLConnection 加载图像并添加 UIActivityIndi​​cator

你能告诉我,最标准的加载图像的方法是什么吗?我应该重写什么?

最佳答案

我建议您使用 AsyncImageView,它是 iCarousel 之父 Nicklockwood 的一个漂亮实现。

https://github.com/nicklockwood/AsyncImageView

使用起来非常简单。

    #import "AsyncImageView.h"

并且在所有 imageView 中都这样做。

    [imageView setImage:@"default.png"];
    [imageView setImageURL:@"whateverurl/whateverimage.png"];

在您的情况下,它将是: [cell.imageView setImageURL:@"yourURL"];

它就像一个魅力,我的代码正在生产中。但是,如果您仍然希望您的代码正常工作,请尝试以下操作:

 UIActivityIndicator *activity =[[UIActivityIndicator alloc] initWithStyle:UIActivityIndicatorWhite];
 [activity setFrame:CGRectMake(100,100,30,30)];
 [self.view addSubview:activity];

 dispatch_queue_t dispatchQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0);
 dispatch_async(dispatchQueue, ^(void)
 { 
  [activity startAnimating];
 [self loadImages];
 dispatch_sync(dispatch_get_main_queue(), ^{ 
 [yourTableView reloadData];
 [activity stopAnimating];
 [activty setHidden:YES];
 });
 }); 

关于iphone - 从网络加载 UIImage 的最常见方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15865809/

相关文章:

ios - Objective-C 中的自动引用计数不能防止或最小化什么样的泄漏?

iphone - 键盘出现时 Xcode/iOS5 : Move UIView up,

ios - viewDidDisappear 后键盘不会消失

ios - Core Spotlight Index 随着时间的推移而缺失

ios - 一些日语文本在 safari mobile 上显示错误

objective-c - 提取 Objective-c 二进制文件

ios - Swift 中的 NSAttributedString 问题

iphone - 更改iPhone uitableview(样式分组)背景颜色,同时保留纹理

iphone - 将图像保存在 IPHONE 中特定相册的图库中

ios - NSOperationQueue添加后台线程操作