タコさんブログ

プログラミングメモと小言

UIScrollView, UIWebView等のContent Insetを調整する

全画面にUIScrollView(UIWebView)を配置すると、ステータスバーを表示している場合、下の図のように、ステータスバーの下にコンテンツが重なって表示されてしまう。

f:id:tiny_wing:20150104012406p:plain

このとき、スクロールヴューの余白、スクロールバーの開始位置を以下のように調整する必要がある。この例ではUIWebViewを使用。

// status bar height:20pt分余白をとる
let edgeInsets = UIEdgeInsets(top: 20, left: 0, bottom: 0, right: 0)
// 上の余白部分
webView.scrollView.contentInset = edgeInsets  
//  スクロールバーの開始位置をずらす
webView.scrollView.scrollIndicatorInsets = edgeInsets  

これで、ステータスバーの高さだけずれる。

f:id:tiny_wing:20150104013253p:plain

UINavigationControllerに埋め込んでいるUIViewControllerにUIScrollView等を配置する場合は、Adust Scroll View Insetsにチェックが入っている状態であれば、自動的に調整される。

f:id:tiny_wing:20150104013144p:plain