目次
Xcode9でビルドしたらナビゲーションバーがずれている!
今まで、UINavigationBarを、高さを変えて使用していた。具体的には、以下のコードのように、高さを64pxにして、ViewControllerのViewにaddして使っていた。(コードはObjective-C)
1 2 |
UINavigationBar *navigationBar = [[UINavigationBar alloc] init]; navigationBar.frame = CGRectMake(0, 0, [UIScreen mainScreen].bounds.size.width, 64); |
しかし、Xcode9でビルドしてみると、表示がおかしい。すりガラス効果がかかっている部分の下が足りなくて、背景のビューがはみ出している。ちょうど、20pxぐらいズレている。
UINavigationBarの高さを変更するのはサポートされていない!
以下URLのApple Staffの回答によると、どうやら、UINavigationBarの高さを(指定されたやり方ではなく、自分の好き勝手に)変更して使用するのは、サポートされていないらしい。
#iOS 11 Xcode 9 Navigation bar height not changes
ということで、リンク先の通りに素直に従うことにした。
すなわち、今まで、64pxのナビゲーションバーを生成して、(0, 0)にaddしていたのを、44pxのナビゲーションバーを生成して、(0, 20)(ステータスバーの下に配置)にaddするように修正した。修正後のコードは以下。
1 2 |
UINavigationBar *navigationBar = [[UINavigationBar alloc] init]; navigationBar.frame = CGRectMake(0, 20, [UIScreen mainScreen].bounds.size.width, 44); |
Storyboardに配置する場合は、TopLayoutGuideの下に配置する感じになるのかな。
他の対応策は、もともとUINavigationBarを機能としてではなく、ただのUIとして使っていたのなら、UIViewに置き換えて、VisualEffectViewを使って代替する方法もある。
コメント