NSURL * imageURL = [NSURL URLWithString:imageurldata];
NSData * imageData = [NSData dataWithContentsOfURL:imageURL];
image1 = [UIImage imageWithData:imageData];
[image1 retain];
我写了上面用于在iPhone上传图像的代码,我正在显示一个新视图,其中我正在显示此图像,但图像需要时间才能显示,直到此时屏幕为空白。我们从url获取图像并将其存储在对象中。有没有同时显示图像和视图?
答案 0 :(得分:2)
尝试这种异步方法:
dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0ul);
dispatch_async(queue, ^{
NSLog(@"Screen %@ - pauseBannerFileImage download starts", self.name);
UIImage *image = [UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:newUrlForImage]]];
dispatch_sync(dispatch_get_main_queue(), ^{
NSLog(@"!-Screen %@-!pauseBannerFileImage downloaded", self.name);
self.imageView.image = image;
});
});
答案 1 :(得分:2)
how to handle tiling of images on the fly。
您将只需要TileImageView类并使用它(不是UIImageView,因为它异步处理数据下载),如下所示....
TileImageView *tileImageView = [[TileImageView alloc]initWithFrame:<myFrameAsPerMyNeeds>];
[tileImageView setTag:<this is the identifier I use for recognizing the image>];
[myImageScrollView addSubView:tileImageView];
[tileImageView startImageDownloading:imageurldata];
[tileImageView release];
谢谢,
答案 2 :(得分:1)
据我所知,从服务器下载数据需要一些时间。覆盖时间延迟的一种方法是在下载图像数据时显示UIActivityIndicatorView
答案 3 :(得分:0)
您可能希望在实际需要之前初始化视图,因此在用户需要视图时可能已经发生了加载。