8

横向きと縦向きの表示をサポートするビューがあり、一方から他方に切り替えるとすべてのコントロールが移動します。現在、ユーザーが電話を回転させたときに、各コントロールの .center を設定することでこれを行っています。問題は、これが面倒で、多くのコードが必要であり、そもそも Interface Builder を使用する目的を無効にしているように見えることです。

私の質問は次のとおりです。Interface Builder で 1 つのビューが複数の外観をサポートする方法はありますか (1 つは横向き、もう 1 つは縦向き)。そうでない場合、他の人はIBでこれをどのように行いますか? 2 つのビューを設定しますか?

編集:横向きと縦向きのビューが異なって見えることを明確にするために、直接変換したくありません。実際には横向きモードでデータを異なって表示します

4

4 に答える 4

1

UIView必要に応じて、非表示にした IB のビューにオブジェクトを追加します。見やすいように素敵な背景色を付けて、背景まで送信します。次に、オブジェクトのフレームを設定する必要があるときに、そのビューのフレームを使用します。それらがたくさんある場合は、UILabel代わりに使用することを検討してください。そうすれば、IB で目に見える名前を付けることができます。

メモリの問題が心配な場合は、これらの余分な をすべて削除し、UIViewそのViewDidLoadフレーム値を member に格納するだけCGRectです。もちろん、これはビューの自動サイズ変更や回転時の再配置がない場合にのみ機能しますが、この場合はおそらくそうすべきではありません。画面が回転したときだけでなく、何らかの理由でサイズ変更/再配置のためにこれを行います。

于 2008-12-30T18:32:57.230 に答える
0

1つのビューがIBで複数の方向をサポートできる唯一の方法は、コンポーネントの自動サイズ変更マスクをスケーリングおよび/またはエッジへのアンカーに設定することです。向きごとにまったく異なるレイアウトを設計するには、ポートレートビューとランドスケープビューを別々に(それぞれ独自のXIBで)設計し、プログラムでそれらを切り替える必要があります。

于 2011-06-01T00:56:54.093 に答える
0

可能かどうかは 100% わかりませんが、横向きと縦向きで異なるビュー コントローラーを使用することを検討しましたか?

于 2008-10-27T04:25:34.953 に答える
0

IB のサイズ インスペクター (コマンド 3) の IBOutlet オブジェクトの AutoSize 属性は、項目の自動ストレッチと配置のための非常に優れたオプションを提供します。L/R および T/B 画面の位置と相対的な幅と高さを制御できます。レイアウトを完全に制御することはできませんが、基本的な操作のほとんどはそこにあります。

于 2009-06-25T22:23:01.937 に答える