Interface Builderでの自動化の設定問題
-
10-10-2019 - |
質問
2つのViewControllersがあります。1つはuiviewcontrollerのサブクラス(正しく自動化されます)、もう1つはuiviewcontrollerのサブクラスのサブクラスです。
インターフェイスビルダーでレイアウトを行い、シミュレータでコードをテストしましたが、すべてが期待どおりに機能します。しかし、デバイスを回転させると、ビューがサイズを変更しません。
そこで、私はインターフェイスビルダーに戻り、「ルート」-uiviewのサイズ変更プロパティを変更できないことがわかりました。そこで私は別のファイルを開き、サイズ変更プロパティもそこに固定されています。しかし、それは両方向にサイズを変更するように設定されています。これは私が望む行動です。
トップUIViewの自動化を変更して、必要なことをするにはどうすればよいですか?
サブビューはそれほど多くないので、ゼロから再び始めることは不可能ですが、私はこれをしたくありません。
解決
私は以前にこれに出くわしましたが、それは信じられないほどイライラしました。ユーザーインターフェイス要素をシミュレートした場合、希望どおりにストラットやスプリングを変更することはできないことがわかります。
属性]タブ(CMD-1)に移動し、ステータスバー、トップバー、ボトムバー、およびスプリットビューがすべて「不特定」に設定されていることを確認します。次に、[サイズ]タブ(CMD-3)に戻ると、線をクリックしてストラットとスプリングを変更できます。最後に、CMD-1に戻り、それらのシミュレートされた要素を再びオンにすることができます。
他のヒント
単純化された答えがあります:
- goto ib
- 「ViewController」をクリックします
- goto '属性インスペクター'
- 「フリーフォーム」に「サイズ」を変更する(「推測」以外のもの)
あなたが持っているのはこれです:
「サイズ」を「フリーフォーム」に変更し、今すぐ試してください!
今、それは機能します!自動化されたマスクを設定した後、戻って「推測」に変更します。
Main.Storyboardをソースとして開き(忘れないでください、それは単なるXMLファイルです)、ビューの「AutoresizingMask」タグを次の行に置き換えます。
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>