gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:23:02 25 4
gpt4 key购买 nike

亲爱的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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com