この質問は本当に基本的なものです。UIView
ビュー階層からを削除することと を非表示にすることのパフォーマンスの違いは何UIView
ですか?
不要なビューはビュー階層から削除する必要があることを読みました。UIButton
現在、時々表示されるはずの状況があります。いつ非表示にしUIButton
、いつスーパービューから削除しますか?
ビューの階層を変更すると費用がかかりますか?
私は iOS6 iPad mini で実験を行いました。大きなスクロール ビューには多くのリッチ コンテンツ (画像、ドロップ シャドウ、グラデーション レイヤー、パターン化された背景画像、デザイナーなど) が含まれています。そのビューを見つけました。 .hidden=YES ≠ [view removeFromSuperview].
hidden を YES に設定すると、ビューがレンダリング/描画されなくなるため、多くの非表示ビューを使用しても効率に影響はないと当初考えていました。しかし、実際の結果は次のとおりです。1) 大きなスクロール ビューのオフスクリーン ビューを非表示に設定すると (表示領域に戻ったときに非表示に戻すと)、スクロールはスムーズではなく、まったく連続的ではありません。自然に減速しているときは、非常にびくびくしています。2)スクロールビューからオフスクリーンビューを削除すると(ただし、追跡配列でメモリに保持されるため、戻ってきたときにすぐに追加できます)、スクロールは明らかにスムーズになります。
サブビューの表示と非表示を切り替える必要がある場合、最善の方法は間違いなく非表示にすることです。とにかく、UIButton
メモリへの影響はそれほど大きくありません。また、プロパティを切り替えるだけの場合、コードは確かに簡単になりhidden
ます。
また、hidden
プロパティがアニメート可能であるという追加の利点も得られます。