0

2つのCALayerサブクラスがあり、それぞれに独自のdrawLayer:(CALayer *)layer inContext:(CGContextRef)ctxデリゲートがあります。どちらも単純なレイヤー(CGパスで描画された単色の形状)ですが、同時に約12のインスタンスをスケーリングする必要があり、フレームレートに問題があります。いくつかのサイクルを解放するために、すべてのレイヤーを不透明としてマークし、(boundsプロパティ自体で)暗黙的および明示的な基本アニメーションを使用し、変換プロパティにCA3DTransform行列を割り当ててみました。

良いフレームレートを維持しながらオブジェクトのサイズをすばやく変更する良い方法を知っている人はいますか?

4

2 に答える 2

1

これは、iPhone の機能を超えているとは思えません。

1つの解決策は、それらを画像にレンダリングしてスケーリングすることでしょうか? これは (多かれ少なかれ) CoreAnimation が行うことです。ただし、欠陥があるようです-コードを投稿して、人々がそれを見ることができるかもしれません。

どこで再描画を実行し、何を再描画しますか?

于 2009-05-09T11:27:28.700 に答える
0

私はロジャーに同意します。

drawLayer:inContext:メソッド (または描画に使用するもの) が呼び出される頻度を確認します。シンプルな NSLog でそれを実現できます。それらが常に呼び出されている場合は、画像にレンダリングしてスケーリングするというロジャーのアイデアを検討してください。

ボトルネックを見つけるには、パフォーマンス ツールを起動する必要があります。

于 2009-05-10T18:03:59.097 に答える