古いアプリのユニバーサル対応で最初に確認すること
iOSアプリ初心者の私が、iPadで作られたアプリをiPhoneにも対応させようとしたときにちょっとハマった部分がありましたので、備忘録として残しておこうと思います。
まずSafeAreaに対応させる
最初、ここにSafe Areaというのが表示されていない状態でした。あとあとConstraintsを付けるときに絶対必要になりますので、表示させておきます。
やり方は、File inspectorのInterface Builder DocumentにあるUse Safe Area Layout Guidesにチェックを入れるだけです。
ナビゲーションバーをコードで表示させている場合
Attributes inspectorのSimulated MetricsにあるTop BarやBottom Barの設定を確認します。私の場合はNavigation Barを使用している画面なのに、ここの設定がInferredになっていました。不透過ナビゲーションバーの場合はOpaque Navigation Barを選択します。Bottomは使用していないのでNoneにしました。
これはどうして必要だったかというと、ナビゲーションバーの高さがiPadとiPhoneとで異なっているのに、配置されているViewなどがSuperViewからナビゲーションバーの高さ分、固定でマージンを取ったConstraintsになっていたからです。ナビゲーションバーの直下に配置したパーツが、iPhoneで見るとナビゲーションバーに隠れてしまってました。
Simulated MetricsでOpaque Navigation Barを設定すると、こんな感じにxib上でナビゲーションバーの線が見えるようになります。ここはSafe Area外となるので、ConstraintsをSafe Area基準でつけていけば、ナビゲーションバーと重なることはなくなるというわけです。
以上、知っている人からすればなんてことない当たり前の知識かと思いますが、初心者はハマりましたので同じく初心者の方のお役に立てれば幸いです。