highlight.xcode

2016年5月19日木曜日

Auto Layout 時の Navigation Bar の取り扱い



ストリーボードで画面遷移を構成する際に「Navigation Controller」を使用するのだが、この時に画面に自動的に追加される「Navigation Bar」が「Auto Layout」で上手く取り扱えなくて困った時のメモ。

「Navigation Bar」が画面上で一番上に位置するオブジェクトになるので、それより下に位置するオブジェクトの位置制約には、「Navigation Bar」からの相対位置を指定するのが自然だと思う。

ところが、この「Navigation Bar」が手動で画面に追加したものの場合は問題無いのだが、「Navigation Controller」により自動的に追加されたものの場合、「Auto Layout」上では無視されてしまい、相対位置指定に使用出来ないのだ。

結論を言うと、「View Controller」の「Attributes inspector」->「Simulated Metrics」->「Top Bar」を「Opaque Navigation Bar」に、「Bottom Bar」を「None」に設定する事で、「Top Layout Guide」の位置が「Navigation Bar」の下になってくれるので、この位置からの相対位置を制約に設定する事が出来る。



「Opaque」は「不透明化」といった意味らしい…。 Apple 歴なんて 2ヶ月にも達していないのだが、Mac とか Xcode のメッセージや、プロパティ名、プロパティ値の内容や単語って、つくづく解りにくいというか、直感的でないというか…。これも「Displaing Navigation Bar」とかで良いじゃんよ…。

0 件のコメント:

コメントを投稿