Я использовал идею Бруно, чтобы изменить размер моего TextView в соответствии с объемом текста, когда я поместил его в ScrollView. Вот как я это делаю. Там куча констант, которые вы не можете использовать. Важно изменить размер textView после добавления его в ScrollView.
// Programmatic creation of scroll view layout
NSString *text = @"Your text";
CGFloat textOffSetInColumn = 10;
CGFloat infoTextWidth = 196;
CGFloat infoOffsetVertical = 36;
CGFloat initialTextHeight = 50;
// Create textView with initial height
CGRect infoTextFrame = CGRectMake(textOffSetInColumn, infoOffsetVertical, infoTextWidth, initialTextHeight);
infoTextView = [[UITextView alloc] initWithFrame:infoTextFrame];
infoTextView.text = text;
[scrollView addSubview:infoTextView];
// Resize textView
CGFloat infoTextHeight = infoTextView.contentSize.height;
infoTextFrame = CGRectMake(textOffSetInColumn, infoOffsetVertical, infoTextWidth, infoTextHeight);
infoTextView.frame = infoTextFrame;
Если вы хотите изменить размер TextView и отцентрировать его к предыдущему центру, вы можете использовать этот код:
// Changing size of TextView and centering
CGPoint center = self.categoryTextView.center;
self.categoryTextView.frame = CGRectMake(_categoryTextView.frame.origin.x, _categoryTextView.frame.origin.y, _categoryTextView.frame.size.width, _categoryTextView.contentSize.height);
self.categoryTextView.center = center;
Вместо categoryTextView используйте свое собственное имя розетки.