2012-04-16 9 views
4

私は現在、自分のアプリで配布されている画像に依存している、すでに書かれたコードをたくさん持っています。私はこれを変更して、絶えずアップロード/承認/新バージョンのリリースをしないように、その場でWebサイトから画像をダウンロードできるようにしたいと考えています。`[UIImage imageNamed:]`は画像をロードしますが、実行時にそこに画像を挿入するにはどうしたらいいですか?

コードには[UIImage imageNamed:@"MyImageName.jpg"]タイプの参照があります。私は喜んでこれらの画像をダウンロードできるコードの部分を特定しています。そこで適切な場所に置くことができれば、ネットワーク接続があれば、アプリはうまく動作し、画像をダウンロードできます。しかし、私は、既存のコードを変更しないで機能させるために、ダウンロードした画像データをどこに書き込むべきかわかりません。

NSDataオブジェクトに関連するイメージデータを取得するコードがあります。このデータを書き込む場所を知るだけでいいですか?これは、アプリケーションバンドルから画像をロードし

NSLog(@"ERROR - MISSING IMAGE: %@", imageName); 
    NSData* theImage = [NSData dataWithContentsOfURL:[NSURL URLWithString:[NSString stringWithFormat:@"http://f6c.yourmapp.mobi/Images/%@", imageName]]]; 
    NSArray* paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
    NSString* documentsDirectory = [paths objectAtIndex:0]; 
    NSString* localFilePath = [documentsDirectory stringByAppendingPathComponent:imageName]; 
    [theImage writeToFile:localFilePath atomically:YES]; 
    tempImage = [UIImage imageNamed:imageName]; 
    if (tempImage != nil) 
    { 
     [images addObject:tempImage]; 
     haveAddedImages = YES; 
    } 

おかげ

答えて

6

。実行時にこのフォルダに書き込むことはできません。代わりに、画像をDocumentsフォルダに書き込んでください(パスはNSDocumentDirectoryで取得できます)。[UIImage imageWithContentsOfFile:]を使用してそのような画像を読み込みます。

+1

(彼らはバンドルの一部なら) '[UIImage imageNamed]'自動的に網膜のファイルを選択すると、あなたが行うにはいくつかのカスタムメソッドを作成することができますドキュメントディレクトリからイメージをロードする場合も同じです。 –

+0

これは厳密には当てはまりません。それはあなたの目標に依存します - つまり、ビューに表示された展開されたイメージを置き換えます。あなたは別のバンドルパスからあなたのペン先をロードすることができます。同じ名前のアプリケーションバンドルイメージを置き換えるペン先のイメージをロードするという観点からは、これは問題ありません。小さな問題:以前にメインからイメージ名をロードしたバンドルすると、新しいバンドルイメージではなくメインバンドルイメージが表示されます。しかし:アプリの起動前にペン先をロードし、元の画像をロードしないでください。ヒント:nibsと変更されていないイメージのためのアプリケーションバンドルに戻るsymlinksを作成します。問題:再起動が必要 – unsynchronized

1

イメージは、アプリケーションのドキュメントフォルダにのみ書き込むことができます。

- (NSURL *)applicationDocumentsDirectory 
{ 
    return [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject]; 
} 

しかし、コード[UIImage imageNamed: "MyImageName.jpg" @]あなたのアプリケーションバンドルから画像をロードし、あなたはそれにデータを書き込む傾けます。

上記のドキュメントフォルダに画像をダウンロードして保存し、必要に応じてimagenameを使用してパスを再作成することができます。

を使用してください。パスから読み込む代わりに、 +(UIImage *)imageWithContentsOfFile:(NSString *)パスを使用してください。

0

イメージはドキュメントディレクトリにダウンロードできます。次に、ドキュメントディレクトリから画像をロードしてください。

ここには、これを達成するのに役立ついくつかのリンクがあります。

http://www.iphonedevsdk.com/forum/iphone-sdk-development/79393-how-download-files-server.html

http://www.cocos2d-iphone.org/forum/topic/16121

Iphone : How to Display Document Directory images in Image View?

関連する問題