iPhoneX対応するために色々調査した結果、SafeAreaInsetsをコードで取得できることがわかったのですが、
普通のUIViewControllerのviewのSafeAreaInsetsは取得できるんですが、
なぜかUITabBarControllerでは取得できないという状態になってしまい、1時間くらいハマってしまいました。
今回は、今後のためメモとして残しておきます。
現象:UITabBarControllerでSafeAreaInsetsが取得できない。
なぜかUITabBarControllerのviewのsafeAreaInsetsが取得できない。。
他のUIViewControllerのviewのsafeAreaInsetsは取得できるのに。。
safeAreaInsetsを取得してみると、topもrightもleftもbottomも0。
UITabBarControllerのサブクラスのTabのviewのsafeAreaInsetsも試しに取得してみたけど、0。
解決法:safeInsetsを取得するタイミングがおかしかった。
UIViewControllerでsafeAreaInsetsを取得できた時は、viewDidLoadで取得できたので、UITabBarControllerでもviewDidLoadで取得していたことが原因だったみたい。
UITabBarControllerのviewDidAppearのタイミングでsafeAreaInsetsを取得したら、普通に取得できました。
多分、UITabBarControllerの場合、複数の子ViewControllerがいるから、viewDidLoadのタイミングでは高さが決まらないから0になるんじゃないかなーと勝手に推測します。
コメントを残す