2012-02-02 10 views
9

私は自分のアプリを最適化しようとしています。非常に視覚的に豊富なので、大きな画像やブレンディングなどのUIViewがかなりたくさんあります。レイヤの変換の前または後にCALayerのラスタライズを行う必要がありますか?

CALayersshouldRasterizeプロパティを試しています。特に1つのケースでは、テーブルを含む多くのサブビューで構成されるUIViewがあります。画面全体がスクロールするトランジションの一部として、このUIViewも(変換を使用して)スケールと回転を行います。

UIViewの内容は静的なままなので、view.layer.shouldRasterize = YESを設定すると意味があると思いました。しかし、パフォーマンスの向上は見られませんでした。それは新しいスケールと回転ですべてのフレームを再ラスタライズすることでしょうか?私はそれが恒等変換行列を持つ冒頭でラスタライズすることを望んでいました、そして、それがトランジションの間に拡大縮小して回転するようにキャッシュしますか?

もしそうでなければ、強制的に起こる方法はありますか?縮尺を変えずにラスタライズされた内容を回転させる余分なスーパービュー/レイヤーを追加するのは短期間です...

答えて

8

CoreAnimation instrumentを使用してアプリケーションをプロファイリングすることで、あなた自身の質問に答えることができます。これはデバイスでのみ利用可能であることに注意してください。

「緑と赤で色を塗りつぶす」を有効にすることができます。レイヤーが赤色のままであれば、フレームごとに実際にラスタライズされていることを意味します。

+0

何が赤くなるのでしょうか? GPUメモリが不足していますか? – jjxtra

+0

いずれか、またはレイヤーが再度レンダリングされたため、キャッシュが無効になります。 – NachoSoto

関連する問題