なおさんのブログ

iOSエンジニアのブログのはずがいろいろ書いてます。

UITableViewのSectionHeaderの位置がおかしい

はじめに

先日、作成した画面のUITableViewのsectionHeaderの位置が微妙にずれていてNavigationBarに隠れてしまっているのが発覚しました。 原因がよく分からなかったので色々と調べてみました。

現象

セクションタイトル1がNavigationBarの下に少し隠れてしまってます。 f:id:naohirotk:20211214163931j:plain

原因

これよくあるExtend EdgesTranslucentの設定ミスですぐ直るかと思ったら全然うまくいかず、設定をいろいろ変えてみてもうまくいかず...。

最終的にはうまく動いている画面と設定を片っぱしから比較してやっと見つけました。 f:id:naohirotk:20211214165154p:plain

うまくいっている画面はここがAutomaticではなく0になっていました。 今までいじったことがなかった設定なのでなんの設定?っと思って調べてみたら、sectionHeaderの高さの見積り値でこれが0だと見積り値を使わなくなるとのこと。 さらにiOS10iOS11でデフォルト値が違うため明示的に指定していないとiOS11以降で動作が変わります。

ということでここを明示的に0を指定して見積り値を使わないようにしたところ正しく動作するようになりました。 よかった。

さいごに

OSやXcodeのアップデートで動作が変わることがあるのはなかなか気が付かないので結構怖いなと。 今回はうまくいっている画面がたまたまあり、それと比較して問題が見つけられたのですが今後もこんなことがあるとちょっと困るなと思いました。

丸一日かかってしまいましたが無事修正できてよかったです。

参考資料

https://qiita.com/masashi-sutou/items/405adf126d0d2c4f0b4e https://armlock.hatenablog.com/entry/2018/05/27/152606