0

画像を投稿できませんでしたが、「CGContextDrawRadialGradient」メソッドを使用して、影付きの青いボール (直径 40 ピクセルまで) を描画し、ボールの周りに「パルス状の」白いリングを作成します (指輪)。リングは青いボールの端から始まり、外側に広がります (半径はタイマーで大きくなります)。白いリングは電波のように外側に広がりながら消えていきます。

シミュレーターでの実行は素晴らしいように見えますが、iPhone 4 での実行は非常に遅くなります。リングは (シミュレーターのように) 約 1 秒でパルスするはずですが、電話では 15 ~ 20 秒かかります。CALayer、CGLayer について少し読んで、いくつかのグラデーション アニメーションのセグメントを読んでいますが、最高のパフォーマンスを得るために何を使用すべきかは明確ではありません。

どうすればこれを高速化できますか。ボールをレイヤーに配置し、拡大するリングを別のレイヤーに配置する必要がありますか? もしそうなら、drawrect で更新するレイヤーをどのように知ることができますか?

ガイダンスに感謝します。ありがとう。

4

1 に答える 1

1

そのようなものを高速化する唯一の方法は、事前にレンダリングすることです。見栄えを良くするために必要な画像フレームの数を決定し、CGBitmapContextCreate で作成したコンテキストに各フレームを描画し、CGBitmapContextCreateImage を使用して画像をキャプチャします。おそらく、画像をアニメーション化する最も簡単な方法は、UIImageView の animationImages プロパティを設定することです (ただし、CALayer アニメーションなどの他のオプションもあります)。

最新の Apple ドキュメントでは、iOS でサポートされているピクセル フォーマットについて最終的に言及されているため、ビットマップ コンテキストを作成する際には必ずそれらを参照してください。

于 2011-04-27T15:38:10.100 に答える