今回はStroyboardでオブジェクトを配置するときに少しつまずいた上下配置について説明しようと思います。
オブジェクトの配置
XcodeではStroyboardでオブジェクト(ここではViewやボタンなどのパーツのこと)を配置して画面を作ります。
ソースコードでUIを作ることもありますが、コード量が膨大になってしまうので、Stroyboardを使うことが多いです。
例えば、下記のUIの場合で説明します。
左側はDocument Outline
といって、オブジェクトの階層を示しています。
1番上に画面いっぱいのViewがあり、その下にFakeLoginView
とLoginFormView
という2つのViewが等間隔で配置されています。
FakeLoginView
の下の階層にはラベルが配置されています。
このように配置することで右のような画面が出来上がります。
Constraintsというオブジェクトの位置を決める制約がありますが、ここでは省略します。
オブジェクトの上下配置
では、先ほど使ったイメージのFakeLoginView
を場合によっては別のViewにしたい場合はどうするでしょうか?
別のUIを作れば楽かもしれないですが、1つのUIで管理する方が初期コストはかからないですよね。
今回は初期表示の場合はFakeLoginView
を表示させて、RealLoginView
は場合によって表示させるようにし、これらを1つのViewControllerで管理します。
まずは下記のように配置します。
そうすると、下記のようなイメージになってしまいます。
FakeLoginView
は消えて、RealLoginView
が前面に表示されてしまします。
これだと、初期表示の場合はRealLoginView
が表示されます。
これはなぜかというとRealLoginView
がFakeLoginView
の前面に位置しているからです。
Document Outline
の同じ階層のオブジェクトは下になるほど前面に表示されます。
なので、対処方法としてはRealLoginView
をFakeLoginView
より上に持っていく必要があります。
やり方としては手動で上に持っていくでも可能ですが、 Xcode メニューでもできます。
移動させたいオブジェクトをダブルクリックした状態で、Xcode メニューのEditor > Arrange
を選択して、Send to Back
を選択すると選択したオブジェクトが背面に移動します。
ダブルクリックしないとできないので注意です。
こうすることで下記のイメージになりました。
Document Outline
ではRealLoginView
がFakeLoginView
より上に配置され、イメージでもFakeLoginView
が表示されています。
このようにiOS開発ではUIの階層があり、これを知らないとUIを作成するのに戸惑うこともあるので、あまり時間をかけずに開発するために知っておく必要があると感じました。