1

私は非常に単純なアプリケーションを持っています...自動レイアウトを学んでいるので、白い背景、ボタン、およびテキストフィールドを持つviewControllerを作成しました。ボタンとテキストフィールドに制約を追加して、それらを親ビュー (viewcontrollers ビュー) の上部に配置し、互いに隣り合わせにしました。完璧に機能しました...

次に、このviewControllerをnavigationControllerにプッシュしようとしましたが、すべてがうまくいきませんでした。背景色は (白ではなく) 黒になり、ボタンとテキストフィールドは、親ビューの上部への自動レイアウト制約を認識しなくなりました。どうしてこれなの?viewController を nav コントローラーの外側と同じように動作させるにはどうすればよいですか?

CRects をスリングして同じ種類のレイアウトを行うと、期待どおりにすべてが完全に機能します。

編集:自動レイアウトモードで、別の楽しいアーティファクトを見つけました。シミュレーターを回転させると、レイアウトはそれ自体を修正し、完璧です。回転させて縦向きに戻すと、思った通りになります(白で上に揃えられます) . ビューを読み込んで、横に回転させて右に戻す必要があるかもしれません。

疑似コード:

--appdelegate--    

window.Root = new uinavcontroller with AutoLayoutController as root
window.makewindowkeyandvisible


--autolayoutcontroller--    

In ViewDidLoad
view.backgroundcolor = white
add(new button)
add(new textfield)
view.addConstraints(new constraint (button.top == view.top + padding)
view.addConstraints(new constraint (textfield.top == view.top + padding)
view.addConstraints(new constraint (textfield.right = button.left)

私が期待するものを示す構造体とスプリング: スタクトとスプリング

ベッドを台無しにするAutoLayout: オートレイアウト失敗

4

1 に答える 1

1

ViewController のビューを TranslatesAutoresizingMaskIntoConstraints に設定していませんでした。これにより、ビューが自動レイアウト ビューになり、高さと幅が 0,0 になりました。それをオフにして、ビューコントローラーのベースビューだけの自動サイズ設定に戻り、すべての子に自動レイアウトを使用した後...期待どおりに機能しました。

于 2013-07-29T02:53:41.503 に答える