2011-12-06 4 views
0

UIImageは、アプリケーションのロードが完了して最初のView Controllerが表示された直後に表示されません。 Webからダウンロードされるため、画像の表示に遅延があります。 applicationDidFnishLaunchingの前に呼び出されるメソッドがあるので、イメージをダウンロードして即座に表示できますか?ここでiPhone SDK:最初のView Controllerが表示される前にUIImageViewをダウンロードして設定します。

は私が画像をダウンロードするために使用していたコードです:デリゲートで
、この方法はappDidFinishLaunchingに呼び出されます。

-(void)downloadImages { 

    NSString *mainImagesJSON = [[NSString alloc]initWithContentsOfURL:[NSURL URLWithString:[NSString stringWithFormat:@"mainImagesJSON.php"]]encoding:NSUTF8StringEncoding error:nil]; 
    SBJsonParser *parser = [[SBJsonParser alloc]init]; 

    NSDictionary dictionary1 = [[parser objectWithString:mainImagesJSON error:nil]mutableCopy]; 


    mainImagesArray = [[dictionary1 valueForKey:@"imgSrc"]mutableCopy]; 

    NSString *imagesTablePath = [mainImagesArray objectAtIndex:0]; 
    NSURL *imgURL = [NSURL URLWithString:imagesTablePath]; 

    NSData *imageData = [NSData dataWithContentsOfURL:imgURL]; 
    UIImage *image1 = [UIImage imageWithData:imageData]; 

    imageStorageArray = [[NSMutableArray alloc]init]; 

    [imageStorageArray addObject:image1]; 



} 

そして、最初のviewController.m中:

AppDelegate *delegate = (AppDelegate *)[[UIApplication sharedApplication]delegate]; 
UIImage *image1 = [[delegate imageStorageArray]objectAtIndex:0]; 
[mainHomeImageView setImage:image1]; 

答えて

0

一般に、applicationDidFinishLaunchingメソッドでは時間がかかるコードを実行するのは時間がかかりすぎてアプリが殺されるように考えるのは良い考えではありません。

イメージがWebからダウンロードされている間に(プロジェクトリソースから)プレースホルダイメージを表示し、ダウンロード後に適切なイメージに置き換えることができます。

また、画像をダウンロードしてキャッシュするための素晴らしいフレームワークであるSDWebImageフレームワークをご覧ください。

このライブラリは、Webからの リモートイメージをサポートするUIImageVIewのカテゴリを提供します。

それは提供しています。

An UIImageView category adding web image and cache management to the Cocoa Touch framework 
An asynchronous image downloader 
An asynchronous memory + disk image caching with automatic cache expiration handling 
A guarantee that the same URL won't be downloaded several times 
A guarantee that bogus URLs won't be retried again and again 
Performances! 
0

私が見る方法は、2つの選択肢があります:

1:最初の実行時にLibrary/Cachesディレクトリにイメージをキャッシュします。何らかのポップアップでユーザーの気を散らすか、またはビューを助ける。

2:ファイルのダウンロードが完了するまで、アプリのスプラッシュ画面が表示されるように、スプラッシュ画面の表示を長くすることができます。その時点でメインビューに切り替わります。

関連する問題