UIImageView
中的图片,因为图片来自下面的图片网址是我的代码。
NSURL *url = [NSURL URLWithString:imageURL];
NSData *data = [NSData dataWithContentsOfURL:url];
UIImageView *subview = [[UIImageView alloc] initWithFrame:CGRectMake(110,10,100,80)];
[subview setImage:[UIImage imageWithData:data]];
[cell addSubview:subview];
[subview release];
在此代码中,imageurl来自rss并处理到UIImageView
以显示图像。如果我删除这个特定的代码,性能是好的,因为所有数据都是文本。
那么如何从url获取图像并快速显示到UIImageView
控制而不会丢失性能或显示活动指示器,直到图像加载完全分开。请帮助我。
答案 0 :(得分:3)
永远不要在主线程上执行网络调用。 Apple为此提供了一个有用的示例应用程序。请参阅LazyTableImages
示例应用,了解在后台加载图片的正确方法。
答案 1 :(得分:1)
您好,您也可以使用名为AsyncImageView
的第三方课程或者您可以创建自己的类,其中包含downloads an image
的NSURLConnectionDelegate由于同步网址请求,这些解决方案还可以在UI锁定时解决您的问题。
答案 2 :(得分:1)
查看here
[DLImageLoader loadImageFromURL:imageURL
completed:^(NSError *error, NSData *imgData) {
imageView.image = [UIImage imageWithData:imgData];
[imageView setContentMode:UIViewContentModeCenter];
}];
答案 3 :(得分:0)
你可以试试这个,
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0), ^(void) {
[self loadImage];
});
-(void) loadImage
{
NSURL *url = [NSURL URLWithString:imageURL];
NSData *data = [NSData dataWithContentsOfURL:url];
UIImageView *subview = [[UIImageView alloc] initWithFrame:CGRectMake(110,10,100,80)];
[subview setImage:[UIImage imageWithData:data]];
[cell addSubview:subview];
[subview release];
}
感谢
答案 4 :(得分:-1)
你可以试试这个
//in .h file
IBOutlet UIImageView *imgTest;
-(IBAction)buttonTapped:(id)sender;
-(void)LoadImage:(NSString *) irlString;
-(void)setImage:(NSData *) imgData;
//in .m file write the following code:
-(IBAction)buttonTapped:(id)sender
{
[self performSelectorOnMainThread:@selector(LoadImage:) withObject:@"http://www.google.com/images/errors/logo_sm.gif" waitUntilDone:NO];
}
-(void)LoadImage:(NSString *) urlString
{
NSURL *imgURL=[NSURL URLWithString:urlString];
NSData *imgData=[NSData dataWithContentsOfURL:imgURL];
[self performSelectorInBackground:@selector(setImage:) withObject:imgData];
}
-(void)setImage:(NSData *) imgData;
{
imgTest.image=[UIImage imageWithData:imgData];
}
希望这会对你有所帮助。