web-dev-qa-db-ja.com

2つのビューの間にビューを中央に配置するiOS自動レイアウト

画像に示されているようにビューを垂直に配置するためにInterface Builderで自動レイアウトを設定する方法:

scheme

Top viewはトップ画面のEdgeに固定され、Bottom viewは下画面のEdgeに固定されました。 My viewは、上下のビューの中央に配置する必要があります(したがって、Top viewへの距離はBottom viewへの距離に等しくなります)

66
brigadir

これを行う方法は、表示されるビューの間に2つの非表示の「スペーサー」ビューを配置することです。

スペースを同じ高さにすることはできません。ただし、「スペーサー」ビューを使用して、ビューの間に配置します(周囲のビューとのギャップはゼロです)。

次に、これらのビューの高さを等しくすると、My ViewBottom Viewに等しい間隔でTop Viewが中央にくるようにビューがプッシュされます。

つまり、このように...

V:|[Top View][spacer1][My View][spacer2(==spacer1)][Bottom View]|

編集-別の方法

これを行う別の方法を考えました。 Top ViewBottom Viewの間にギャップのない非表示のコンテナUIViewを使用できます。

次に、My Viewをこの非表示ビュー内に配置し、垂直方向に中央に配置します。

104
Fogmeister

(5年後)最も標準的な解決策を見つけました。

UILayoutGuideは、この種のタスクを解決するために特別に導入されました(iOS 9以降)。

レイアウトガイドを使用して、作成したダミービューを置き換えて、ビュー間のスペースまたはユーザーインターフェイスでのカプセル化を表します- 参照ドキュメント

コードではかなりうまく機能しますが、残念ながらInterface Builderはカスタムレイアウトガイドをサポートしていません。

7
brigadir

このビデオでは、インターフェイスビルダーの自動レイアウトと制約の驚くべき概要を説明します。 https://www.youtube.com/watch?v=1j-Frd5snYc

0
user3474985