2

キーフレームアニメーションを使用して、一連の画像をアニメーション化しています。しかし、初めて実行すると、アニメーションが開始するまでに遅延が発生します。その後はスムーズに動作します。すべての画像を強制的に読み込んでみました。遅延は減少しましたが、それでも表示されます。どうすれば遅延をさらに減らすことができますか。

4

4 に答える 4

2

Apple は「遅延」読み込み技術を使用することで悪名高く、「[UIImage imageNamed:]」から取得した画像を配置しても、実際にはキャッシュされたビットマップが作成されず、それを作成するための領収書が作成される可能性が非常に高くなります。

他のすべてが失敗した場合は、ブルート フォース アプローチを試してください。コンテキスト内で画像をレンダリングすることにより、システムに強制的にレンダリングさせてから破棄します。

CGSize bigSize; // MAX width and height of your images

UIGraphicsBeginImageContextWithOptions(bigSize, YES, 0);
CGContextRef context = UIGraphicsGetCurrentContext();

for(UIImage *image in arrayOfImages) {
    CGContextDrawImage(context, (CGRect){ {0,0}, image.size }, [image CGImage]);
}
UIGraphicsEndImageContext();

これで、画像への参照が得られただけでなく、レンダリングが強制されたので、システムがその内部ビットマップを維持できることを願っています。あなたにとって簡単なテストになるはずです。

于 2012-08-07T11:30:43.917 に答える
-1

で画像をプリロードすることを検討してくださいNSArray。遅延は、最初に画像をロードする必要があるという事実が原因である可能性が最も高い.

img1.pngしたがって、基本的に、、、img2.pngなどを次のように持っているとしましょうimg10.png:

//do this before your keyframe animation.

NSMutableArray *frames = [NSMutableArray array];
for(int i = 1 ; i <= 10 ; i++)
    [frames addObject:[UIImage imageNamed:[NSString stringWithFormat:@"img%d.png" , i]]];

//now use this array for the animation

お役に立てれば。乾杯!

于 2012-08-07T11:06:25.847 に答える