の内容に合わせてのサイズを調整する良い方法はありますかUITextView
? たとえば、UITextView
テキストが 1 行含まれている があるとします。
"Hello world"
次に、別のテキスト行を追加します。
"Goodbye world"
rect
Cocoa 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;