我试图使用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>
使用AFnetworking
,如果URL不正确,则可以在其中设置占位符映像。当您将图像加载到tableview或集合视图中时,这更有效。
导入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下载
查看AsyncImageView
。它是最好的异步图像加载器AFAIK。您所要做的就是将图像URL设置为imageView,其余的都要照顾。包括缓存。
我找到了问题
我的代码正常工作。
问题是我的代码中的某个地方,ImageView
是nil
。谢谢所有