UITextView をコンテンツに合わせてサイズ設定するにはどうすればよいですか? 質問する

UITextView をコンテンツに合わせてサイズ設定するにはどうすればよいですか? 質問する

の内容に合わせてのサイズを調整する良い方法はありますかUITextView? たとえば、UITextViewテキストが 1 行含まれている があるとします。

"Hello world"

次に、別のテキスト行を追加します。

"Goodbye world"

rectCocoa Touch で、テキスト ビュー内のすべての行を保持し、それに応じて親ビューを調整できる を取得するための良い方法はありますか?

別の例として、カレンダー アプリケーションのイベントのメモ フィールドを見てみましょう。セル (およびそれUITextViewに含まれるセル) が拡張されて、メモの文字列のすべてのテキスト行が保持されることに注意してください。

ベストアンサー1

これは iOS 6.1 と iOS 7 の両方で機能します。

- (void)textViewDidChange:(UITextView *)textView
{
    CGFloat fixedWidth = textView.frame.size.width;
    CGSize newSize = [textView sizeThatFits:CGSizeMake(fixedWidth, MAXFLOAT)];
    CGRect newFrame = textView.frame;
    newFrame.size = CGSizeMake(fmaxf(newSize.width, fixedWidth), newSize.height);
    textView.frame = newFrame;
}

または Swift で (iOS 11 の Swift 4.1 で動作)

let fixedWidth = textView.frame.size.width
let newSize = textView.sizeThatFits(CGSize(width: fixedWidth, height: CGFloat.greatestFiniteMagnitude))
textView.frame.size = CGSize(width: max(newSize.width, fixedWidth), height: newSize.height)

iOS 6.1 のサポートが必要な場合は、次のことも行う必要があります。

textview.scrollEnabled = NO;

おすすめ記事