Я уже сделал несколько поисков на Переполнении стека и 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 всегда является тем же:
27.01.2010 14:15:45.096 myApp [1362:207] [myUITextView кадр] .size.height: 367.000000
Спасибо!
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 Warning, ссылка на docs корректна, но мой пример кода не протестирован, извините :)
.На самом деле существует очень простой способ изменить размер UITextView до нужной высоты с помощью его contentSize.
CGRect frame = _textView.frame;
frame.size.height = _textView.contentSize.height;
_textView.frame = frame;
Следует отметить, что правильный contentSize доступен только после того, как UITextView был добавлен к представлению с помощью addSubview. До этого он равен frame.size