1

まあ、メモリ管理は私を狂ってしまう!メモリ警告なしで複数のローカルイメージをロード

ここに私の問題があります:

私は画像にn個の参照を持つplistを持っています。 私がしようとしていることは、各子をつかんで、ページングを有効にしてUIScrollViewに追加されたUIImageViewにロードすることです。

私の問題:

  • 私はn個のイメージがあります。たった3回でも、60回以上になる可能性があります。
  • ズーム可能なので、それぞれの画像には相当な解像度(1152x1536)があります。

私はCATiledLayerについて読んで、PhotoScrollerサンプルを見ましたが、画像の部分を表示している間にフェードインを作成し、その効果が適合しないため、CATiledLayerを使用しないでください。

私はちょうどあなたの意見を聞きたいです、どのように通常この種のタスクを解決しますか?

私はここに私のコードの一部を残す:

UIImage * image; 
UIImageView * imageview; 

for (int i = 0; i < [data count]; i++) 
{ 
    image = [[UIImage alloc] initWithContentsOfFile:[NSString stringWithFormat:@"%@/%@", 
                [[NSBundle mainBundle] bundlePath], 
                [[data objectAtIndex:i] objectForKey:@"content"]]]; 

    [content addObject:image]; 

    imageview = [[UIImageView alloc] initWithImage: [content objectAtIndex:i] ]; 
    [imageview setTag:i+10]; 
    imageview.frame = CGRectMake(1024 * i, 0, 1024, 768); 

    [scroll addSubview: imageview]; 

    [imageview release]; 
    [image release]; 
} 

[scroll setContentSize:CGSizeMake(1024*[data count], 768)]; 

このコードは、私が例えば60のイメージをロードしようとすると、アプリがメモリの警告を受けてください。

あなたはそのアイデアを得ていると思いますよね?

提案がありますか?

ご協力いただきありがとうございます。

答えて

3

メモリの問題を回避したい場合は、必要な場合にのみ、それらを一度に読み込むべきではありません。これを実現するには、Appleが提供する例、hereに従ってください。

基本的には、現在表示されている画像と、右と左に配置されている画像の3つの画像のみを読み込むだけです。次に、スクロールするときは、右に向かって、前に左にあったものを削除し、右端に新しい画像を配置します。

+0

本当にありがとう、私は試して、後で私が何をしたかを教えてあげるよ! –

関連する問題