Edited at

UINavigationBarの下にViewが隠れてしまうのを防ぐ方法

More than 1 year has passed since last update.


このページについて

Storyboardを使わずにコードでViewを作る際によくある、「UINavigationBarの下に潜り込むような形でviewが配置されてしまう」 「viewがNavigationBarで隠れてしまう」という問題を一行で解決するtips。メモも込めて。


方法1: edgesForExtendedLayoutを使う

個人的に推奨

対象のViewControllerで

override func viewDidLoad() {

super.viewDidLoad()
edgesForExtendedLayout = []

}

とする。


方法2: navigationBar.isTranslucentを使う

対象のViewControllerで

 override func viewDidLoad() {

super.viewDidLoad()
navigationController?.navigationBar.isTranslucent = false

}

とする。

※言わずもがなこの方法をとるとNavigaitonBarが半透明でなくなる。これにより、上にSearch Barを配置している場合はSearch Barとの境目がわからなかったり、デザインの現実感やフレキシブルさが損なわれたりする。個人的には方法1の方をおすすめする。


結論

魔法のようにviewがNavigationBarの下に表示され始める。

ご指摘等あればどうぞよろしくお願い致しますmm


参考