私は現在、自分のアプリで配布されている画像に依存している、すでに書かれたコードをたくさん持っています。私はこれを変更して、絶えずアップロード/承認/新バージョンのリリースをしないように、その場で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;
}
おかげ
(彼らはバンドルの一部なら) '[UIImage imageNamed]'自動的に網膜のファイルを選択すると、あなたが行うにはいくつかのカスタムメソッドを作成することができますドキュメントディレクトリからイメージをロードする場合も同じです。 –
これは厳密には当てはまりません。それはあなたの目標に依存します - つまり、ビューに表示された展開されたイメージを置き換えます。あなたは別のバンドルパスからあなたのペン先をロードすることができます。同じ名前のアプリケーションバンドルイメージを置き換えるペン先のイメージをロードするという観点からは、これは問題ありません。小さな問題:以前にメインからイメージ名をロードしたバンドルすると、新しいバンドルイメージではなくメインバンドルイメージが表示されます。しかし:アプリの起動前にペン先をロードし、元の画像をロードしないでください。ヒント:nibsと変更されていないイメージのためのアプリケーションバンドルに戻るsymlinksを作成します。問題:再起動が必要 – unsynchronized