Как мне изменить размер UITextView на его содержимое?

Это больше не работает на iOS 7 и выше

На самом деле существует cocoa-touch очень простой способ изменить cocoa-touch-framework размер UITextView до его правильной nsautolayout высоты содержимого. Это можно cocoa-touch сделать с помощью UITextView contentSize.

CGRect frame = _textView.frame;
frame.size.height = _textView.contentSize.height;
_textView.frame = frame;

Следует apple-ios отметить, что правильный uikit contentSize доступен только после того, как UITextView был добавлен ios-sdk в представление с помощью nsautolayout addSubview. До этого он был равен frame.size

Это uikit не сработает, если включена apple-ios автоматическая компоновка. При iphone-os автоматическом макете общий uitextview подход заключается в использовании ios метода sizeThatFits и обновлении значения iphone-os constant на ограничении высоты.

CGSize sizeThatShouldFitTheContent = [_textView sizeThatFits:_textView.frame.size];
heightConstraint.constant = sizeThatShouldFitTheContent.height;

heightConstraint - это apple-ios ограничение макета, которое uitextview вы обычно устанавливаете iphone-os через IBOutlet, связывая autolayout свойство с ограничением высоты, созданным cocoa-touch в раскадровке.


Просто добавлю ios-sdk к этому удивительному ответу, 2014 nsautolayout год, если вы:

[self.textView sizeToFit];

разница в поведении uitextview только с iPhone6 ​​+:

Как мне изменить размер UITextView на его содержимое?_apple-ios

Только с 6+ (не cocoa-touch с 5 или 6) он добавляет «еще autolayout одну пустую строку» в UITextView. "Решение nsautolayout RL" отлично это исправляет:

CGRect _f = self.mainPostText.frame;
_f.size.height = self.mainPostText.contentSize.height;
self.mainPostText.frame = _f;

Исправлена uitextview ​​проблема с лишней строкой cocoa-touch-framework на 6+.

ios

cocoa-touch

autolayout

uikit

uitextview

2022-10-29T02:13:29+00:00