我的应用程序显示了大量图像,因此我使用页面控件在单个控制器中显示图像。 用户可以通过滑动查看所有图像。
我正在使用 AFNetworking 库来展示良好的性能。我使用了属性setImageWithUrl
// This is myCode
NSURL *myUrl = [NSURL URLWithString:@"http://mdb.scicloudsolutions.com:8001/sites/default/files/landscape_design_1.jpg"];
[imageView setImageWithUrl:myUrl];
它不是第一次出现.. 当我打印网址和图像时
NSLog(@"Url is .. : %@ image. is : %@",myUrl,imageView.image);
响应: 我正在接收网址值但不是图片价值。 它首次显示图像为空。
如何解决?
答案 0 :(得分:0)
这里设置[imageView setImageWithUrl:myUrl];
因此,将图像加载到ImageView需要一些时间。
使用SDWebImage图书馆更好。只需简单从链接下载此库并将图像设置为
[imageView sd_setImageWithURL:url
placeholderImage:[UIImage imageNamed:@"placeholder.png"]];
答案 1 :(得分:0)
使用以下解决方案:
@property (nonatomic, strong) NSMutableData *data
@property (nonatomic, strong) NSURLConnection *connection;
NSURLRequest *request = [NSURLRequest requestWithURL:url
cachePolicy:NSURLRequestUseProtocolCachePolicy
timeoutInterval:60.0];
connection = [[NSURLConnection alloc] initWithRequest:request delegate:self];
将这些委托方法添加到视图控制器:
- (void)connection:(NSURLConnection *)connection
didReceiveData:(NSData *)incrementalData {
if (data==nil) {
data = [[NSMutableData alloc] initWithCapacity:2048];
}
[data appendData:incrementalData];
}
- (void)connectionDidFinishLoading:(NSURLConnection *)aConnection {
connection = nil;
UIImage *image = [UIImage imageWithData:data];
// Set above image to your imageView.
data = nil;
}
答案 2 :(得分:0)
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
/*============= YOU ARE ON BACK GROUND THREAD ==================*/
UIImageView *yourImageView=[[UIImageView alloc] init];
UIImage *img=[UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:@"pass your url here"]]];
dispatch_async(dispatch_get_main_queue(), ^(void) {
/*============= YOU ARE ON MAIN THREAD ==================*/
yourImageView.image=img;
});
});