iOS
UITextView
Swift

UITextViewのInsetについて

More than 1 year has passed since last update.

UITextViewの文字周りにマージンを入れたい場合はcontentInsetを使ってもダメで、textContainerInsetを使わないといけない。

どれくらいダメなのか以下を見るとわかる。

contentInset
        textView.contentInset = UIEdgeInsetsMake(100, 100, 100, 100)
        textView.sizeToFit()

Screen Shot 2015-08-24 at 15.32.29.png
は…という感じ。どう見ても上下左右100pxのマージンなど無い。

textContainerInset
        textView.textContainerInset = UIEdgeInsetsMake(100, 100, 100, 100)
        textView.sizeToFit()

Screen Shot 2015-08-24 at 15.32.45.png

というわけでtextContainerInsetを使うのが正解。

じゃあcontentInsetってなんなんだよってなるんだけど、これはUITextViewの中にあるUIScrollViewに対するInset。
ただUITextViewはテキスト量が自身のサイズを超えないとcontentSizeが溢れないため文字量が少ないとcontentInsetも効かなくなる。