iPhoneX対応でSafeAreaInsetsが取得できない場合の解決法

AppleのiPhoneX発表でFace IDが失敗したのには裏があった!?

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になるんじゃないかなーと勝手に推測します。

 

 

 

AppleのiPhoneX発表でFace IDが失敗したのには裏があった!?

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です