1

ICarouselでアプリを作成しています。カルーセルには約30個のアイテムがあります。各アイテムは、アニメーションを表示するUIImageViewを備えたビューです。

現在、30個すべてのビューを先に作成し、それらを配列に追加して、必要に応じてカルーセルに提供しています。

        SBTViewController* iv1 = [[SBTViewController alloc] initWithNibName:@"SBTViewController" bundle:nil];
    SBTViewController* iv2 = [[SBTViewController alloc] initWithNibName:@"SBTViewController" bundle:nil];
 .....
 .....
    SBTViewController* iv30 = [[SBTViewController alloc] initWithNibName:@"SBTViewController_iPhone" bundle:nil];


viewsarray = [NSArray arrayWithObjects: iv1,iv2...  iv30]

カルーセルがより多くのビューを必要とする場合-配列からのビューを提供するだけです

しかし、私はMemoryWarningsを取得し始めます。'reuseView'オプションを使用しようとしましたが、単に機能しないか、何かを誤解しています。次が呼び出されるたびに:

  - (UIView *)carousel:(iCarousel *)carousel viewForItemAtIndex:(NSUInteger)index reusingView:(UIView *)view
{

}

「ビュー」をオフスクリーンビューの1つに変更しようとしました。しかし、それは機能していないようです。カルーセルは空白の画面を表示します。

なにが問題ですか ?

ありがとう

4

1 に答える 1

3

ReusingView は、ビューをリサイクルすることで、ビューの割り当て/割り当て解除の必要性を減らすように設計されています。しかし、すべてのビューを配列に格納しているため、それらはすべて一度に作成され、とにかく解放されないため、役に立ちません。

問題は、基本的に、一度にメモリにロードしようとしている画像が多すぎることです (ビュー数 x ビューごとのアニメーション フレーム数)。

フレームを動的にロードする方法を見つける必要があります。私の GLView ライブラリ (https://github.com/nicklockwood/GLView) を試してみてください。これには、リアルタイムでロードできる PVR 画像を使用してアニメーションを再生するための説明が含まれています。GLView ライブラリには、UIImageView と同じように機能する GLImageView クラスが含まれていますが、事前にすべての画像をロードする代わりに、再生する画像ファイル名の配列を指定できます。

于 2012-10-21T08:04:51.930 に答える