てくてくテック

気ままに開発のメモを書いていこうと思います。主にSwiftかと。

PageViewControllerでNavigationbar(またはStatusbar)の高さ分ずれる

はじめに

PageViewControllerを使っていて、なぜか遷移した直後の画面でNavigationbarかStatusbar分高さがずれるという現象に出会ったので そのことについて記します。

現象

PageViewControllerを利用した画面にUINavigationbarからpushViewControllerした際に、下図のようにNavigationbar分ずれる現象。(画面上部に合わせているはずなのに) また、ちょっと画面を触るとそのずれが治ります。

https://gyazo.com/2518de19f28459f87567aef7e4b7ac25

調べてみると下記の条件がある模様です。 1. UINavigationControllerの子供 2. PageViewControllerのTransition Type が Scroll

解決方法

原因は正直よくわかっていませんが、Storyboard上でPageViewControllerのAdjust Scroll View Insetsのチェックを外せば解決します。コードからでも良いと思います。
UIPageViewControllerをUINavigationControllerにいれたらナビゲーションバー部分に潜り込まなくなった件を参考にさせていただきました。また、UINavigationControllerと領域拡張に潜む罠も参考になると思います。