在 iOS 中从 URL 加载 UIImage
Load UIImage from URL in iOS
我正在尝试使用 completion
和 placeholder
图像从其 URL 加载 UIImage
,但 UIImage
和占位符 UIImage
已加载。
这是我的代码:
NSURL *url = [NSURL URLWithString:@"http://assets.gearlive.com/tvenvy/blogimages/stewiegriffin.jpg"];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
[self.imageView setImageWithURLRequest:request placeholderImage:[UIImage imageNamed:@"bg.png"]
success:^(NSURLRequest *request, NSHTTPURLResponse *response, UIImage *image) {
imageView.image = image;
}
failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error) {}
];
尝试使用此代码获取图像...
代码:
NSURL *url = [NSURL URLWithString:@"http://www.fnordware.com/superpng/pnggrad16rgb.png"];
NSData *data = [NSData dataWithContentsOfURL:url];
UIImage *image = [UIImage imageWithData:data];
[self.imageview1 setImage:image];
注:我用过测试url。你可以使用你的 url.
更新:
Swift 3.0 代码 :
let url = URL(string: "http://www.fnordware.com/superpng/pnggrad16rgb.png")
do {
let data = try Data(contentsOf: url!)
var image = UIImage(data: data)
self.imageView.image = image
print(image)
} catch {
}
注意:在Xcode版本7.1及以上你需要设置ATS(App Transport Security)。要设置 ATS,您需要在 info.plist 文件中编写以下代码。
确保图像的 url 不应该为零。
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
查看 AsyncImageView
。它是最好的异步图像加载器 AFAIK。您所要做的就是将图像 URL 设置到 imageview 中,剩下的就交给您了。包括缓存。
使用 AFnetworking
如果 url 不正确,您也可以在其中设置占位符图像。当您在表格视图或集合视图中加载图像时,这会更有效率。
导入UIImageView+AFNetworking.h
#import "UIImageView+AFNetworking.h"
和我们下面的代码:
NSString *url1=@"http://www.fnordware.com/superpng/pnggrad16rgb.png";
[self.image setImageWithURL:[NSURL URLWithString:url1] placeholderImage:[UIImage imageNamed:@"placeholder.png"]];
您可以从gitHub
下载
我找到问题了
My code is working correctly.
问题出在我的代码中,ImageView
是 nil
。
谢谢大家
我正在尝试使用 completion
和 placeholder
图像从其 URL 加载 UIImage
,但 UIImage
和占位符 UIImage
已加载。
这是我的代码:
NSURL *url = [NSURL URLWithString:@"http://assets.gearlive.com/tvenvy/blogimages/stewiegriffin.jpg"];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
[self.imageView setImageWithURLRequest:request placeholderImage:[UIImage imageNamed:@"bg.png"]
success:^(NSURLRequest *request, NSHTTPURLResponse *response, UIImage *image) {
imageView.image = image;
}
failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error) {}
];
尝试使用此代码获取图像...
代码:
NSURL *url = [NSURL URLWithString:@"http://www.fnordware.com/superpng/pnggrad16rgb.png"];
NSData *data = [NSData dataWithContentsOfURL:url];
UIImage *image = [UIImage imageWithData:data];
[self.imageview1 setImage:image];
注:我用过测试url。你可以使用你的 url.
更新: Swift 3.0 代码 :
let url = URL(string: "http://www.fnordware.com/superpng/pnggrad16rgb.png")
do {
let data = try Data(contentsOf: url!)
var image = UIImage(data: data)
self.imageView.image = image
print(image)
} catch {
}
注意:在Xcode版本7.1及以上你需要设置ATS(App Transport Security)。要设置 ATS,您需要在 info.plist 文件中编写以下代码。 确保图像的 url 不应该为零。
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
查看 AsyncImageView
。它是最好的异步图像加载器 AFAIK。您所要做的就是将图像 URL 设置到 imageview 中,剩下的就交给您了。包括缓存。
使用 AFnetworking
如果 url 不正确,您也可以在其中设置占位符图像。当您在表格视图或集合视图中加载图像时,这会更有效率。
导入UIImageView+AFNetworking.h
#import "UIImageView+AFNetworking.h"
和我们下面的代码:
NSString *url1=@"http://www.fnordware.com/superpng/pnggrad16rgb.png";
[self.image setImageWithURL:[NSURL URLWithString:url1] placeholderImage:[UIImage imageNamed:@"placeholder.png"]];
您可以从gitHub
下载我找到问题了
My code is working correctly.
问题出在我的代码中,ImageView
是 nil
。
谢谢大家