2009-12-29 46 views
0

我写了我的代码-(void)loadView{ }使用NSURL从互联网上获取图像。但在加载图像之前,我需要显示微调器(UIActivityIndicatorView)。在哪里可以使用UIActivityIndi​​catorView?

#import "ImageFromWebViewController.h" 
#define USE_TEST_SERVER 1 
@implementation ImageFromWebViewController 
+(NSString *)fileName 
{ 
#if USE_TEST_SERVER 
    return @"http://happyhyderabad.files.wordpress.com/2009/04/anushka4.jpg"; 
#else 
    return @"http://nutritionresearchcenter.org/healthnews/wp-content/uploads/2008/07/johnny_depp.jpg"; 
#endif 
} 

- (void)loadView { 
    NSString *urlString = [ImageFromWebViewController fileName]; 
    NSURL *url = [NSURL URLWithString:urlString]; 
    UIImage *image = [UIImage imageWithData:[NSData dataWithContentsOfURL:url]]; 
    imageView = [[UIImageView alloc] initWithImage:image]; 
    contentView = [[UIScrollView alloc] initWithFrame:[[UIScreen mainScreen] applicationFrame]]; 
    [contentView setContentSize:[image size]]; 
    [contentView addSubview:imageView]; 
    [imageView setUserInteractionEnabled:NO]; 
    self.view = contentView; 
} 

- (void)didReceiveMemoryWarning { 
     [super didReceiveMemoryWarning]; 
     } 

- (void)dealloc { 
    [imageView release]; 
    [contentView release]; 
    [super dealloc]; 
} 
@end 

viewDidLoad我写的代码为UIActivityIndicatorView,但图像的加载后的微调开始,并没有停止。

我应该在哪里编写微调代码?

回答

1

您需要先在后台线程下载图像。在viewDidLoad中,您需要启动您的微调器,然后启动后台线程。隐藏微调和绘制图像取决于你如何去做。下载完成后,您可以在后台线程中隐藏微调器,但严格来说,通常最好不要修改除主线程之外的任何线程的用户界面。

如果你不想打扰处理你自己的后台线程,看看[NSURLConnection connectionWithRequest:delegate:]。这将启动自己的后台线程,以允许您异步加载数据。在这种情况下,仍然在viewDidLoad中启动微调器,然后处理NSURLConnection的内容,并在数据完成下载时调用的委托回调方法中隐藏微调器(因为您将回到主线程中)点,我相信)。

相关问题