1

Apple のメール アプリの電子メール詳細コントローラーのような ViewController を作成したいと考えています。「差出人」、「宛先」などがあります。新しい電子メールを追加すると、最初のビューのサイズが変更され、スタック内の他のすべてのビューも元が変更され、コンテナー ビュー全体のサイズが変更されます。この問題に対する美しい解決策はありますか? Three20 Mail Composer に私を送らないでください。私はすでにそれを見ました。独自の同様のコントローラーを実装したい。コード例が必要でした。

4

1 に答える 1

3

iOS6 には AutoLayout が搭載されることが公に発表されています - これは基本的にこの種の問題を解決するように設計されています。

以前のバージョンでは、何をしたいかによって異なります。単純なケースでは、下に移動する必要があるすべてのビューを一緒に空のコンテナー UIView に配置します。次に、各ビューを個別に移動する代わりに、そのコンテナー ビューを変更してアニメーション化できます。

可動部分が多い場合、そのアプローチはうまく拡張できません。そのような場合、私は現在、画面のメイン コンテナ ビューをカスタム サブクラス クラスにする傾向があります (デフォルトのプレーンな UIView とビューコントローラにレイアウト ロジックを持つのとは対照的です)。このビュー サブクラスは、表示されるコンテンツに基づいて、その画面上で必要なサイズと位置を一元的に決定する役割を果たします。そのメソッドは- layoutSubviews、任意の UIView アニメーション ブロックから呼び出すことができます。から呼び出される- layoutSubviewsということは、オートローテーションでも機能することを意味します。

ポジションの取り方について:基本的には上から下に向かって作業するだけです。すべてのビューについて、必要な高さ、下の隣とのギャップを計算し、yそれらの数値で現在の値を増やします。y次に下のビューの原点の座標をその実行中の値に設定し、そのy高さとマージンなどを追加します。完了したら、最終的な y 値をスクロール ビューのとして使用できるはずです。これらすべてのビューが含まれています。heightcontentSize

于 2012-08-21T12:12:28.713 に答える