2012-02-23 13 views
0

私はUImageViewを持っています。ボタンをクリックすると、UImageViewUImageを変更します。アプリケーションは22 UImagesの各画像が5メガバイトを超えているので、ボタンをクリックしたときに画像をロードするのに時間がかかります。画像ビューに時間がかからないように画像をメモリに読み込む方法があります画像を表示しますか?iPhone Appのメモリに画像を読み込む

[ImageView setImage:[UIImage imageNamed:@"ImageName.jpg"]]; 

基本的に、私は、例えば、画像を変更するスワイプにしたい:私は画像を設定するために、次のコードを使用し

ユーザーが右から左にスワイプすると、アプリは次の画像を表示し、左から右にバック画像をロードする必要があります。提案してください 。ドキュメントから

+0

そのが既に –

答えて

0

このメソッドは、指定した名前とそれが存在する場合は、オブジェクトを返すと、画像オブジェクトのためのシステムキャッシュ内を検索します。一致するイメージオブジェクトがキャッシュにない場合、このメソッドは指定されたファイルからイメージデータをロードし、キャッシュしてから結果のオブジェクトを返します。

時間がかかる場合は、フルビューが生成/ロードされるまで進行状況インジケータをアプリケーションに追加して、画面に表示することができます。

+0

我々がロードできないが含まれている場合、多分あなたは、あなたが問題を解決する方法を教えたり適切なソリューションをマークすることができますイメージをキャッシュに入れますか? – Singh

+0

キャッシュに直接アクセスすることはできず、そのシステムは制御します。どちらも手動で消去することはできません。(なぜこの方法は、あなたのケースではなく、この方法は知らされていません) 多分、私はあなたの目標に達するために別の方法であなたを助けることができるかもしれないことについてもっと多くの情報を提供することができます –

+0

私は、ユーザが次のボタンを押すと、次の画像が画像ビューに表示され、戻るボタンが押されたときに前の画像が表示される。私は画像ビューに表示される画像を追跡するためのカウンタ変数を保持しています。 – Singh

0

最初の最も簡単なオプションは、画像を5MB未満に縮小することです。彼らは本当にそれを大きくする必要がありますか?それらはサムネイルですか?より複雑なオプションは、ディスパッチキューを使用してバックグラウンドスレッドに(非同期に)イメージをロード/キャッシュすることです。

1

@Gobotのように、あなたの写真のサイズを減らすのに最適な方法です。スワイプの場合、このような大きな画像を使用する必要はありません。 1つは小さいサイズの写真と大きい写真の2つのフォルダを作成することができます。あなたがスワイプすると、あなたは小さな絵を使うだけです。ユーザーが画像をタップすると、選択した画像の名前が表示され、UIImageが表示され、この画像だけが読み込まれます。そのようにして、ズームインのための高画質の写真を提供することもできます。また、あなたのアプリパッケージは、あなたが含んでいる写真が大きくなるほど大きくなります。

WWDCストリームでは良い説明があります:iOS App Performance: Graphics and Animations

私も一度、すべての私のUIImagesをロードするためのNSMutableArrayカテゴリ内のメソッドを作成しました。あなたはviewDidLoadの内側に、このメソッドを使用することができます。

- (NSMutableArray *)getImagesWithStartSuffix:(NSString *)start 
           andEndSuffix:(NSString *)end{ 

    NSMutableArray *imageArray = [[NSMutableArray alloc] init]; 

    for (int i = 1; i < 100 + 2; i++) { 

     NSString *fileName = [NSString stringWithFormat:@"%@%d%@.jpg", 
             start, i, end]; 

     if([self fileExistsInProject:fileName]){ 

      [imageArray addObject:[UIImage imageNamed:fileName]]; 
     } else { 

      break; 
     } 
    } 
    return imageArray; 
} 

Apple Scriptを書き込むことによって、あなたの写真のサイズを変更するには非常に簡単な方法もあります。あなたは、すべての画像にループを実行し、これらのすべての方法でサイズを変更することができます。これは最も簡単な方法であり、あなたはGimpまたはPSような任意のツールを使用する必要はありません。

do shell script "sips [path_to_file]/picture1.jpg -z 666 1000 --out [path]/changedSize/picture1_small.jpg" 
関連する問題