1

16 個のボタンを持つ ViewController があります。各ボタンは、移動中の 50 フレームのレンダリングを表示するポップオーバーをロードします。

それを行うのに最適なフォームは何ですか?

すべての画像をキャッシュにロードするため、それが悪いことはわかってimageWithNameいます。このため、次のように実行しています。

myAnimatedView.animationImages=[NSArray arrayWithObjects:
                                [UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:[NSString stringWithFormat:@"%@0000",nombrePieza]ofType:@"png"]],
                                [UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:[NSString stringWithFormat:@"%@0001",nombrePieza]ofType:@"png"]],
                                [UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:[NSString stringWithFormat:@"%@0002",nombrePieza]ofType:@"png"]],
    ...
    ...
    ...                         [UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:[NSString stringWithFormat:@"%@0050",nombrePieza]ofType:@"png"]],nil];

しかし、さまざまなフレームでポップオーバーを約 10 回ロードすると、デバイスでのみメモリ リークが発生し、シミュレータでは発生しません。

このため、どの形式が最適か知りたいですか?

ビデオで?またはCAAnimation

手伝ってくれてありがとう。

4

2 に答える 2

0

この場合、メモリの問題が発生しないように、タイマーを使用することをお勧めします

...
page = 1;
imageAnim = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 320, 460)];
[[self view] addSubview:imageAnim];
tim = [NSTimer scheduledTimerWithTimeInterval:0.1 target:self selector:@selector(avv) userInfo:nil repeats:YES]; 
...

- (void)avv {
    UIImage *img = [UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:[NSString stringWithFormat:@"SplashAnimation %03d", page] ofType:@"png"]];
    [imageAnim setContentMode:UIViewContentModeScaleToFill];
    [imageAnim setImage:img];
    page++;
    if(page > maxNumberFrame) {
       [tim invalidate];
    }
}

これはアイデアを得るための例です

于 2012-04-09T12:04:46.553 に答える