Авторазмер UITextView и UIScrollView - PullRequest
11 голосов
/ 27 января 2010

Я уже сделал несколько поисков в Stack Overflow и Google, но не смог найти решение своей проблемы.

У меня есть подробное представление для продукта, который включает в себя UIScrollView и несколько подпредставлений (UIImageView, UILabel, UITextView). Вы можете найти пример здесь .

Сначала я хочу автоматически изменить размер UITextView (не самого текста!) До соответствующей высоты. Затем я хочу автоматически изменить размер всего UIScrollView, чтобы он соответствовал высоте моего UITextView и элементов над ним. Я пробовал следующий код:

myUITextView.frame = CGRectMake(2.0, 98.0, 316.0, self.view.bounds.size.height);

[scrollView setContentOffset:CGPointMake(0.0, 0.0) animated:NO];
scrollView.contentSize = CGSizeMake(320.0, 98.0 + [myUITextView frame].size.height);

[self.view addSubview:scrollView];

98.0 + [рамка myUITextView] .size.height) потому что моя мысль была такой: Получив высоту myUITextView, добавьте к ней высоту других подпредставлений (98.0).

К сожалению, это не очень хорошо работает. В зависимости от содержимого UIScrollView оно может быть слишком коротким или длинным. Я сделал некоторые записи, в результате чего высота UITextView всегда одинакова:

2010-01-27 14: 15: 45.096 myApp [1362: 207] [myUITextView frame] .size.height: 367.000000

Спасибо!

Ответы [ 2 ]

22 голосов
/ 21 марта 2010

На самом деле есть очень простой способ изменить размер UITextView до его правильной высоты, используя его contentSize.

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

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

0 голосов
/ 27 января 2010

UITextView не будет автоматически изменять размер своего содержимого (не так, как я знаю в любом случае), поэтому вам нужно самостоятельно получить размер текста и соответственно изменить размер UIView.

Функции на эта страница поможет - вы можете использовать их, чтобы получить ширину и высоту строки, что-то вроде

// Get the size that the string will render at
NSString *contents = @"This is the content of your UITextView";
CGSize areaSize = [contents sizeWithFont:myView.font forWidth:myView.frame.size.width lineBreakMode:UILineBreakModeWordWrap];

// Then set the frame of your UITextView to be the right size
myView.bounds = CGRectMake(0, 0, areaSize.width, areaSize.height);

Затем вы можете расположить другие компоненты вокруг него.

Надеюсь, это поможет,

S

PS Внимание, ссылка на документы верна, но мой пример кода не проверен, извините:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...