を設定すると、contentInset
内でテキストがより正確に表示されるようになる場合がありますUITextView
。UITextView
ただし、表示するテキストが少ないにもかかわらずスクロールが有効になっているという問題の解決には役立ちません。
同様に、 などの方法にsizeWithFont
も制限があります。Mike Weller の優れたブログ シリーズiOS Development: You're Doing It Wrongで説明されNSString
ているように、a の大きさについて質問するのは適切ではありませUIView
ん。、などの多くのUIView
サブクラスには、サイジング時に考慮しなければならないインセットやその他の考慮事項があります。も例外ではありません。UILabel
UIButton
UITextLabel
このテーマに関するマイク・ウェラーの特定のエントリは次のとおりです。
あなたのやり方は間違っている #2: -[NSString sizeWithFont:...] を使用してラベルのサイズを変更する
iOS 7UITextView
では、textContainerInset
. しかし、その間に何をすべきか?
まず、UITextView
が のサブクラスであることを確認しUIScrollView
ます。したがって、 がcontentSize
ビューのプロパティよりも大きい場合bounds
、スクロール ビューがスクロールしてより多くのコンテンツを表示できるという黄金律が成り立ちます。
テキストに基づいてスクロールする必要があるかどうかが既に計算されており、間違った答えが得られていることがわかっているためcontentSize
、再度チェックアウトしても機能しません。bounds
UIScrollView
これは、任意の調整値が助けになるところです! 私にとって、この値は17.f
. あなたにとって - あなたのフォントに応じて - 異なるかもしれません。次に制御を取り、スクロール ビューのスクロールを許可するかどうかを決定します。
static const CGFloat kArbritaryHeight = 17.f;
CGFloat adjustedContentHeight = myTextView.contentSize.height - kArbritaryHeight;
CGFloat boundsHeight = CGRectGetHeight(myTextView.bounds);
BOOL tooMuchContent = adjustedContentHeight > boundsHeight;
if (tooMuchContent)
{
myTextView.scrollEnabled = YES;
}
else
{
myTextView.scrollEnabled = NO;
}