画像のドラッグ、ピンチ、ズームなどの操作を実行するために複数UIImageView
を追加しています。これを実行するためのより良い解決策はありますか? ありがとうUIView
UIImageViews
1 に答える
通常、多数の画像を追加しても、アプリの速度が低下するほどの問題が発生することはありません。たとえば、ばかげた例でポイントを説明するために、250 (!) の画像ビューをそれぞれ 3 つのジェスチャで追加しました。これは iPad 3 で正常に動作し、画像を最終的な静止位置/サイズ/回転にアニメーション化します。
2 つの観察:
画像ビューで計算集約的なことをしていますか? 例えば:
Quartz 2D で単純に影を追加すると、実際には非常に計算コストがかかるため、パフォーマンスに大きな影響があります。レイヤー シャドウを使用している可能性が低い場合でも、 を使用してみてください
shouldRasterize
。これにより、問題は軽減されますが、解決されません。それが問題である場合、計算効率の高いシャドウを実行するための他の (厄介な) 手法があります。もう 1 つの驚くべき計算集約的なプロセスは、画像が (たとえば) 透明度設定の PNG である場合、またはビューの
alpha
/を減らした場合です。opacity
読み込まれている画像の解像度/サイズは? 画像が非常に大きい場合、画像ビューは に従ってレンダリングし
contentMode
ますが、大きな画像を取得して縮小すると非常に遅くなる可能性があります。可能であれば、画面解像度の画像を使用してください。
これらは、無害に見えるもののほんの一例に過ぎませんが、実際には計算コストが非常に高くなります。画像ビューで Quartz の装飾を行っている場合は、一時的に元に戻して、変更があるかどうかを確認することをお勧めします。
パフォーマンスの問題を自分で診断するという点では、次の 2 つの WWDC ビデオを見ることをお勧めします。
WWDC 2012 - #211 - Building Concurrent User Interfaces on iOSには、パフォーマンスの問題の原因を特定するためのインストゥルメントのかなり実用的なデモンストレーションが含まれています。このビデオは明らかに 1 つの特定のソリューション (計算コストの高いプロセスをバックグラウンドに移動し、並行 UI を実装する) に焦点を当てています。
WWDC 2012 - #235 - iOS アプリのパフォーマンス: 応答性は、アプリの応答性を測定する方法と問題に対処するための手法に焦点を当てたディスカッションです。インストゥルメントのチュートリアルは前のビデオほど優れているとは思いませんが、より詳細に説明されています。
うまくいけば、これでうまくいくでしょう。それでも困惑している場合は、ビューがどのように追加/構成されているか、およびジェスチャが何をしているかに関する関連コードを共有する必要があります。おそらく、パフォーマンスの問題の性質を明確にすることもできます (たとえば、最初のレンディションにあるのか、ジェスチャが行われている間のフレーム レートが低いのかなど)。