質問

私は短い時間(PNGシーケンス)で表示するのに必要な一連の画像を持っています。 45キロバイト程度のファイルサイズは合計で31のPNG画像、それぞれが全く存在します。私はすでに、次のコードでそれらをロードしています:

imgArray = [[NSMutableArray alloc] init];
for(int i = 0; i <= 30; i++) {
    NSString * filename = [NSString stringWithFormat:@"img_000%.2d.png", i];
    UIImage *temp = [UIImage imageNamed:filename];
    [imgArray addObject:temp];
    [temp release];
    temp = nil;
} 

私は、画像を表示するために、次のコードを使用します:

CGImageRef image = [(UIImage *)[imgArray objectAtIndex:imgFrame] CGImage];
imgLayer.contents = (id)image;
if(imgFrame < 29) {
    imgFrame++;
} else {
    imgFrame = 0;
    imgLayer.hidden = TRUE;
    [imgTimer invalidate];
}

ここでimgLayerはCALayerです。 (imgTimer間隔0.03s有する繰り返しタイマである)

しかし、私は、画像を呼び出したときに、それが初めてで非常にラグであることがわかりました。第一の外観を除いて、他の外観は問題ありません。

これは、画像をプリロードに関係していますか?それとも私のイメージは、ファイルサイズが大きすぎる?

役に立ちましたか?

解決

あなたの遅れの理由は、プロファイリングデータをせずに伝えるのは難しいです。一つの大きなファイルにすべてのあなたのイメージに参加:しかし、ここで役立つかもしれないトリックがあります。 (多分あなたの場合は6x6のか、4 * 8)は、長方形にするために試してみてください。次いで、この1つのファイルを読み込み、表示するための各画像をトリミングする(即ち、タイルのサイズと表示用の画像を作成して、表示画像に他の後の大きな画像からの1枚のタイルをコピー)。

他のヒント

、彼らが使用され、表示されたときにイメージがロードされています。 あなたが楽器の時間プロファイラを使用する場合は、ラグ、あなたが経験しているでしょう。あなたは、その遅れにズームし、それを引き起こしているものを見れば、あなたは通常、右の「膨らませる」の前に、「copyImageBlockSetPNGは」時間を割い関数であることがわかります。

あなたが実行する方法を見つけなければならない何があなたのイメージを作成し、それらを必要とする前に、それらをロード力です。これは明らかに別の話だ。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top