1

IOS 6 iPad アプリには、複数のコンテナー ビューを持つコンテナー ビュー コントローラーがあります。現在、アプリを横向きにロックしていて正常に動作しますが、縦向きもサポートしたいと思います。Interface builderを介して自動レイアウトと制約を使用してすべてが設定されます。可能であれば、一貫性、保守性などのために 1 つのストーリーボードを保持したいと思います。

レイアウトは次のとおりです。ヘッダー、左側のメニュー、2 つのコンテンツ ペイン (横に並べて表示)、およびフット ペイン。コンテンツを除くすべてのペインのサイズを変更します。横向きから縦向きに回転するとき、一方のコンテンツ ペインをもう一方の下にスライドさせ(現在は画面から吹き飛ばします)、両方ともコンテナ ビューの端に固定するようにします。

HTML5/CSS3 でこれを行うのは簡単ですが、私は IB で立ち往生しています。ヘルプ/アイデアは素晴らしいでしょう!

ありがとう!

編集:

解決 -

@Charles A. の提案に従って、NSLayoutConstraints を IBOutlets にリンクし、コードで間隔/優先度を操作しました。私が本当に苦労したのは、高さと幅の制​​約を使用することでした。何かを移動すると、Interface Builder はこれらを削除するか、先頭/末尾および上/下の制約で上書きします。私はついに屈服し、すべての高さと幅の制​​約を取り除き、先頭/末尾/上/下のみを使用しました。

私が理解した2つのこと:制約にはマイルストーン(たとえば優先度750の1つ)があるため、実際に優先度を749から750に変更すると、次のようになります。

Mutating a priority from required to not on an installed constraint (or vice-versa) is not supported.

しかし、750 から 800 に変更した場合は問題ありません。

また、制約を操作した後、次を呼び出す必要がありました。

[self updateViewConstraints]

[parent updateViewConstraints] を提案する投稿を見つけましたが、うまくいきませんでした。

とにかく、あまり出回っていないので、これがこの場所の他の人に役立つことを願っています.

4

1 に答える 1

1

2 つのコンテンツ ビューを処理するためにレイアウトの制約がどのように設定されているかを知らずに、質問に具体的に答えることは困難です。そうは言っても、私はおそらく、これと同様にレイアウトを制約することで、この UI を使用することになるでしょう (この場合、スーパービューが 2 つのコンテンツ ビューの親であると仮定して、ビジュアル形式を使用して説明します)。

|-[contentViewOne]-0-[contentViewTwo(==contentViewOne)]-|

ストーリーボードで上記のように制約が設定されている場合、IBOutletタイプNSLayoutConstraint*を作成して、2 つのコンテンツ ビューの間の水平方向のスペース制約 (私の場合は上記の定数値 0 を指定するもの) に接続できます。横向きから縦向きにアニメーション化するときは、その定数値を の負の幅に設定するだけですcontentViewOne。これにより、望ましい効果が得られるはずです。縦向きから横向きに回転するときも、明らかに 0 に戻す必要があります。

コンテンツ ビューの幅が等しいと仮定していることは注目に値します。そうでない場合は、それを覆うものと同じ幅に一時的に設定するために、下にスライドするものに幅の制約のアウトレットを作成する必要がある可能性もあります。

autolayout を使用してこのレイアウトに対処する方法は多数あります。上で説明したことは、そのような方法の 1 つにすぎません。それは、あなたがすでに持っているレイアウトを考えると、何が理にかなっているのかということになります。

于 2013-08-24T19:21:24.540 に答える