Xcode9でUINavigationbarの高さがずれてしまうのは、自分の使い方が間違っていたのが原因だった。

目次

Xcode9でビルドしたらナビゲーションバーがずれている!

今まで、UINavigationBarを、高さを変えて使用していた。具体的には、以下のコードのように、高さを64pxにして、ViewControllerのViewにaddして使っていた。(コードはObjective-C)

しかし、Xcode9でビルドしてみると、表示がおかしい。すりガラス効果がかかっている部分の下が足りなくて、背景のビューがはみ出している。ちょうど、20pxぐらいズレている。

UINavigationBarの高さを変更するのはサポートされていない!

以下URLのApple Staffの回答によると、どうやら、UINavigationBarの高さを(指定されたやり方ではなく、自分の好き勝手に)変更して使用するのは、サポートされていないらしい。
#iOS 11 Xcode 9 Navigation bar height not changes
ということで、リンク先の通りに素直に従うことにした。
すなわち、今まで、64pxのナビゲーションバーを生成して、(0, 0)にaddしていたのを、44pxのナビゲーションバーを生成して、(0, 20)(ステータスバーの下に配置)にaddするように修正した。修正後のコードは以下。

Storyboardに配置する場合は、TopLayoutGuideの下に配置する感じになるのかな。
他の対応策は、もともとUINavigationBarを機能としてではなく、ただのUIとして使っていたのなら、UIViewに置き換えて、VisualEffectViewを使って代替する方法もある。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

メインはWeb系エンジニアです。

コメント

コメントする

CAPTCHA


目次