既存のアプリをiOS11のシミュレータとかで動かすと結構な頻度で遭遇するかもしれません。
これは iOS11から scrollView で NavigationBar や ToolBar にあわせて contentInset を調整しなくてよくなったためです。
iOS10アプリでそのへんを考慮した調整をしていると、ずれます。
(UIScrollViewを内包してるWKWebView, UIWebView, UITableViewも同様)
※ 公開済みの資料をもとに書いてますが、問題ありましたら教えてください
資料
詳細 (要Safari)
https://developer.apple.com/videos/play/wwdc2017/204/
https://developer.apple.com/videos/play/wwdc2017/204/?time=1090
この辺から語られている
どう変わったの
今まではNavigationBarとかを設置していたらcontentInset.topを設定してやっていたが
iOS11からはUIKitが勝手に調整してくれます、ということだそうです
adjustedContentInset.top
に調整された分の値が入ってます
※ToolBarなども同様
実装の話
UIScrollViewに、
var contentInsetAdjustmentBehavior: UIScrollViewContentInsetAdjustmentBehavior
というプロパティが増える。
ここに上記enumをセットしてやることで勝手に調整してくれたりしてくれなかったりする。
デフォルトが automatic
で、勝手に調整することになっているため、
iOS10までのアプリでscrollViewのcontentInsetを自分で調整してるアプリは、そのままだとずれてしまう。
never
を指定しつつ既存のcontentInset調整をそのまま活かすか、
automatic
のまま新しく調整しなおすかになるかと思われます