繁体   English   中英

UIActivityIndi​​catorView从网上加载图像时?

[英]UIActivityIndicatorView when loading image from online?

我有一个简单的脚本,可以从互联网显示在UIImageView中。

有没有一种方法可以显示UIActivityIndi​​catorView或类似的东西来向用户显示其正在加载?

这是我的最小代码:

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM