![](/img/trans.png)
[英]Stop animating UIActivityIndicatorView when UIImageView image has finished loading
[英]UIActivityIndicatorView when loading image from online?
我有一个简单的脚本,可以从互联网显示在UIImageView中。
有没有一种方法可以显示UIActivityIndicatorView或类似的东西来向用户显示其正在加载?
这是我的最小代码:
NSString *imagePath = [NSString stringWithFormat:@"urlofimagehere.jpg"];
NSData *mydata = [[NSData alloc] initWithContentsOfURL:[NSURL URLWithString:imagePath]];
UIImage *myimage = [[UIImage alloc] initWithData:mydata];
[imageView setImage:myimage];
[myimage release];
谢谢! 库尔顿
编辑:已删除代码
-[NSData initWithContentsOfURL:]
是一种同步方法。 这意味着它将一直阻塞,直到通过网络加载数据为止。 如果希望能够使UI保持响应状态,则需要使用异步方法。 有关更多信息,请阅读: http : //akosma.com/2010/05/28/initwithcontentsofurl-methods-considered-harmful/
我建议将NSURLRequest与NSURLRequestDelegate一起使用,以在数据加载完成后接收回调。 这是一个例子:
- (void)loadImageAtURL(NSString *)urlString {
[myUIActivityIndicatorView startAnimating];
// SHOW NETWORK INDICATOR
[UIApplication sharedApplication].networkActivityIndicatorVisible = YES;
// SET UP THE REQUEST
NSURL *url = [[NSURL alloc] initWithString:urlString];
NSURLRequest *request = [[[NSURLRequest alloc] initWithURL:url] autorelease];
// SET UP THE CONNECTION
connection = [[NSURLConnection alloc] initWithRequest:request delegate:self];
mutData = [[[NSMutableData alloc] init] retain];
}
- (void)connection:(NSURLConnection *)connection
didFailWithError:(NSError *)error {
// Handle error
}
- (void)connection:(NSURLConnection *)connection
didReceiveData:(NSData *)data {
[mutData appendData:data];
}
- (void)connectionDidFinishLoading:(NSURLConnection *)aConnection {
// ONCE LOADED HIDE NETWORK INDICATOR
[UIApplication sharedApplication].networkActivityIndicatorVisible = NO;
// RELEASE THE CONNECTION
[connection release];
// CREATE NEW UIIMAGE FROM THE DATA
image = [[[UIImage alloc] initWithData:mutData] retain];
[mutData release];
// HIDE THE ACTIVITY INDICATOR
// Make sure hidesWhenStopped is set to YES on the activity indicator.
[myUIActivityIndicatorView stopAnimating];
[myUIImageView setImage:image];
[image release];
}
希望这可以帮助!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.